题目描述:

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)相关推荐

  1. 【一周头条盘点】中国软件网(2018.10.22~2018.10.26)

    每一个企业级应用的人都置顶了中国软件网 中国软件网为你带来最新鲜的行业干货 一周热点 微软发布"创纪录"的Q1财报:营收291亿美元 净利同比增34% 10月25日,微软发布了20 ...

  2. 【NOIP2018模拟赛2018.10.22】pets

    与cards同天考的题,反正很恶心人.. 首先分组,我将一队放进a,二队放进b,然后队伍中n^2建边,若 i 打得过 j 就连一条有向边,将 j 的入度+1,然后topo序判环. 可以看出如果有环就说 ...

  3. 2018.10.22 20:10

    没人关心你具体到底吃了哪些东西,怎么吃的,虾是怎么剥皮的.骨头是怎么啃得,只需要讲清楚"吃饱"这个目的就好. 不要一味的埋头耕地,也好时常抬头看看田埂. 一直埋头耕地,你就是一个搬 ...

  4. Noip 模拟 5 2018/10/22

    T1:南州(south) 在那美丽的南州,有一个美丽的砚池,池边有一圈美丽的花,一共有nnn朵. 某一天,有n∗mn∗mn∗m个人去给池边的花施肥,他们每人拿了一袋肥料.但这nnn朵花中有一朵特立独行 ...

  5. 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 ] − ...

  6. 2018.10.17考试

    2018.10.17考试总结 1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到自己来到了魔法城堡, 但一扇巨大的石门阻拦了他通向城堡内的路.正当他沮丧之际,突然发现门上有一处机关, ...

  7. 2018/01/22 爬虫日记

    20171024 ①导入自定义的模块(如类),需要在当前类作导入 类的引用声明,如self.tool = tool.Tool() 20171025 ①正则表达式:两个<><>之 ...

  8. Java学习笔记——从零开始(2018.04.22已更新)

    2018.04.08 --Java开发入门-- -计算机基本概念- •什么是计算机 计算机是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成,没有安装任何软件的计算 ...

  9. 10天精读掌握:计算机组成与设计(COAD:Patterson and Hennessy) (第3天 2018/10.26)

    10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第3天 2018/10.26 1. 第4次周计划概览 2. 今日学习成果 今日成果简述 今日笔记 3. 今日时间 ...

最新文章

  1. [C#1] 10-事件
  2. 解读三种虚拟化之路连载一:x86虚拟化概述
  3. Hadoop集群中添加硬盘
  4. 十大经典排序算法动画与解析,看我就够了!(配代码完全版)
  5. SCREEN屏幕编程时候必须保证SCREN中词典的字段格式必须和数据表中字段的类型长度一致!...
  6. 【计算机思维】面向人的开发 站在巨人的肩膀上
  7. winform模拟鼠标点击
  8. Atitit 架构师之道 attilax著 1.1. 认和评估系统需求, 2 1.2. 给出开发规范 2 1.3. ,搭建系统实现的核心构架, 2 1.4. 扫清主要难点的技术人员 2 1.5. 核
  9. marlab中主成分得分怎么求_数学无耻得分法,独家秘密,快点用起来
  10. windows本地破解用户口令
  11. DW怎么把模板拽进html文件中,在Dreamweaver中如何使用模板
  12. 无聊的时候氵一些小套路
  13. 游戏音效制作的过程中,需要研发公司怎么配合?
  14. doc创建计算机用户,问什么我电脑一直创建这些文件夹?$RECYCLE.BIN qqpcmgr_docpro System Volume Information...
  15. 项目初始化及文件配置-黑马头条PC
  16. OV强推性价比手机,小米或成最大受害者
  17. 六、文件管理(1.文件和文件系统)
  18. 【SAM】51Nod1647 小Z的Trie
  19. MAC OS 上好用的文本编辑器除了Sublime Text和BBEdit还有这些好用的推荐一下。
  20. LSTM预测算法(股票预测 天气预测 房价预测)

热门文章

  1. 又一个强大的PHP5.3依赖注入容器
  2. 5月.CN域名注册量持续上涨至1199万个 净增14万
  3. data pump工具
  4. 如何直接将HTML代码加载到TWebBrowser
  5. C# richtextbox 自动下拉到最后 方法 RichTextBox读取txt中文后出现乱码
  6. 开源可视化日志分析软件-Gource
  7. 1057. Stack (30)
  8. zabbix 乱码的问题
  9. 基于angularJS和requireJS的前端架构
  10. 如何判断是否丢掉用户请求(转载)