2018.10.22-dtoi1443奶牛逃亡(cowrun)
题目描述:
Farmer John忘记修复他农场篱笆上的一个大洞,以至于篱笆围着的N(1<= N <=1,000)只奶牛从大洞中逃脱出来,并在农场里横冲直撞。每头在篱笆外的奶牛每分钟都将给他带来一美元的损失。FJ必须遍及每头奶牛、安抚它们来停止这些损失。幸运的是,这些奶牛被定位在农场外的直线道路上的不同位置。 FJ知道每头奶牛相对于FJ的位置P_I(-500,000<= P_I的<=500000,P_I=0),FJ所处的位置记为位置0。FJ每分钟可以移动一个单位的距离,并可以当即完成对奶牛的安抚,停止他们造成的损失。请确定FJ安抚奶牛的顺序,使得他可以最大限度地减少经济损失,并计算出在此顺序下的总损失。
输入:
第1行:奶牛的数目N
第2..N+1行:第I+1行包含一个整数Pi
输出:
输出仅一行,输出所得到的最低总损失。
算法标签:DP
思路:
其实思路貌似满常规的,关键是要自己加一个点在0处,然后从0点拓展往两边走。用f[i][j][0/1]表示i-j区间的奶牛已经安抚好了,0表示上一只奶牛在左边,1即在右边。
以下代码:
#include<bits/stdc++.h> #define il inline #define _(d) while(d(isdigit(ch=getchar()))) using namespace std; const int N=1e3+5,inf=1e9;int p[N],f[N][N][2],s,n,st; il int read(){int x,f=1;char ch;_(!)ch=='-'?f=-1:f;x=ch^48;_()x=(x<<1)+(x<<3)+(ch^48);return f*x;} il int d(int x,int y){return abs(p[x]-p[y]);} int main() {n=read();for(int i=1;i<=n;i++)p[i]=read();p[++n]=0;sort(p+1,p+1+n);for(int i=1;i<=n;i++)if(p[i]==0){st=i;break;}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)f[i][j][1]=f[i][j][0]=inf;f[st][st][0]=f[st][st][1]=0;for(int i=st;i;i--){for(int j=st;j<=n;j++){if(i==st&&j==st)continue;f[i][j][0]=min(f[i+1][j][0]+d(i,i+1)*(n-j+i),f[i+1][j][1]+d(i,j)*(n-j+i));f[i][j][1]=min(f[i][j-1][0]+d(i,j)*(n-j+i),f[i][j-1][1]+d(j,j-1)*(n-j+i));}}printf("%d\n",min(f[1][n][0],f[1][n][1]));return 0; }
View Code
转载于:https://www.cnblogs.com/Jessie-/p/9834439.html
2018.10.22-dtoi1443奶牛逃亡(cowrun)相关推荐
- 【一周头条盘点】中国软件网(2018.10.22~2018.10.26)
每一个企业级应用的人都置顶了中国软件网 中国软件网为你带来最新鲜的行业干货 一周热点 微软发布"创纪录"的Q1财报:营收291亿美元 净利同比增34% 10月25日,微软发布了20 ...
- 【NOIP2018模拟赛2018.10.22】pets
与cards同天考的题,反正很恶心人.. 首先分组,我将一队放进a,二队放进b,然后队伍中n^2建边,若 i 打得过 j 就连一条有向边,将 j 的入度+1,然后topo序判环. 可以看出如果有环就说 ...
- 2018.10.22 20:10
没人关心你具体到底吃了哪些东西,怎么吃的,虾是怎么剥皮的.骨头是怎么啃得,只需要讲清楚"吃饱"这个目的就好. 不要一味的埋头耕地,也好时常抬头看看田埂. 一直埋头耕地,你就是一个搬 ...
- Noip 模拟 5 2018/10/22
T1:南州(south) 在那美丽的南州,有一个美丽的砚池,池边有一圈美丽的花,一共有nnn朵. 某一天,有n∗mn∗mn∗m个人去给池边的花施肥,他们每人拿了一袋肥料.但这nnn朵花中有一朵特立独行 ...
- 2018.10.22 cogs2471. [EZOI 2016]源氏的数学课(线段树)
传送门 线段树入门操作. 直接把题目给的 ( r − i + 1 ) ∗ a [ i ] (r-i+1)*a[i] (r−i+1)∗a[i]拆开变成 ( r + 1 ) ∗ 1 ∗ a [ i ] − ...
- 2018.10.17考试
2018.10.17考试总结 1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到自己来到了魔法城堡, 但一扇巨大的石门阻拦了他通向城堡内的路.正当他沮丧之际,突然发现门上有一处机关, ...
- 2018/01/22 爬虫日记
20171024 ①导入自定义的模块(如类),需要在当前类作导入 类的引用声明,如self.tool = tool.Tool() 20171025 ①正则表达式:两个<><>之 ...
- Java学习笔记——从零开始(2018.04.22已更新)
2018.04.08 --Java开发入门-- -计算机基本概念- •什么是计算机 计算机是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成,没有安装任何软件的计算 ...
- 10天精读掌握:计算机组成与设计(COAD:Patterson and Hennessy) (第3天 2018/10.26)
10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第3天 2018/10.26 1. 第4次周计划概览 2. 今日学习成果 今日成果简述 今日笔记 3. 今日时间 ...
最新文章
- [C#1] 10-事件
- 解读三种虚拟化之路连载一:x86虚拟化概述
- Hadoop集群中添加硬盘
- 十大经典排序算法动画与解析,看我就够了!(配代码完全版)
- SCREEN屏幕编程时候必须保证SCREN中词典的字段格式必须和数据表中字段的类型长度一致!...
- 【计算机思维】面向人的开发 站在巨人的肩膀上
- winform模拟鼠标点击
- Atitit 架构师之道 attilax著 1.1. 认和评估系统需求,	2 1.2. 给出开发规范	2 1.3. ,搭建系统实现的核心构架,	2 1.4. 扫清主要难点的技术人员	2 1.5. 核
- marlab中主成分得分怎么求_数学无耻得分法,独家秘密,快点用起来
- windows本地破解用户口令
- DW怎么把模板拽进html文件中,在Dreamweaver中如何使用模板
- 无聊的时候氵一些小套路
- 游戏音效制作的过程中,需要研发公司怎么配合?
- doc创建计算机用户,问什么我电脑一直创建这些文件夹?$RECYCLE.BIN qqpcmgr_docpro System Volume Information...
- 项目初始化及文件配置-黑马头条PC
- OV强推性价比手机,小米或成最大受害者
- 六、文件管理(1.文件和文件系统)
- 【SAM】51Nod1647 小Z的Trie
- MAC OS 上好用的文本编辑器除了Sublime Text和BBEdit还有这些好用的推荐一下。
- LSTM预测算法(股票预测 天气预测 房价预测)