bzoj1742[Usaco2005 nov]Grazing on the Run 边跑边吃草

bzoj3074[Usaco2013 Mar]The Cow Run

题意:

数轴上有n棵草,牛初始在L位置(bzoj3074的牛初始在1位置),每移动一个单位需要+1s。而每过1s没吃的草腐败度会+1,问吃完所有草的最小腐败度。n≤1000。

题解:

很神的dp。f[l][r][0/1]表示从第l棵草吃到第r棵草,之后到达l/r。则

f[l][r][0]=min(dfs(l+1,r,0)+(n-r+l)*(a[l+1]-a[l]),dfs(l+1,r,1)+(n-r+l)*(a[r]-a[l]));
f[l][r][1]=min(dfs(l,r-1,1)+(n-r+l)*(a[r]-a[r-1]),dfs(l,r-1,0)+(n-r+l)*(a[r]-a[l]));

之所以要乘(n-r+l)的原因是在当前的转移的同时所有未吃的草的腐败度都增加了等同于当前转移时间的值。

为了方便处理,先增加一棵虚拟的草位置为l,接下来设除了虚拟的草所有f[i][i]为正无穷,而那棵虚拟的草对于的f[i][i]=0。

代码(bzoj1742):

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#define inc(i,j,k) for(int i=j;i<=k;i++)
#define maxn 1010
#define ll long long
#define INF 1e16
using namespace std; inline int read(){
char ch=getchar(); int f=,x=;
while(ch<''||ch>''){if(ch=='-')f=-; ch=getchar();}
while(ch>=''&&ch<='')x=x*+ch-'',ch=getchar();
return f*x;
}
ll f[maxn][maxn][]; int a[maxn],n,l;
ll dfs(int l,int r,int b){
if(f[l][r][b]!=-)return f[l][r][b];
if(!b)f[l][r][b]=min(dfs(l+,r,)+(n-r+l)*(a[l+]-a[l]),dfs(l+,r,)+(n-r+l)*(a[r]-a[l]));
else f[l][r][b]=min(dfs(l,r-,)+(n-r+l)*(a[r]-a[r-]),dfs(l,r-,)+(n-r+l)*(a[r]-a[l]));
return f[l][r][b];
}
int main(){
n=read(); l=read(); memset(f,-,sizeof(f));
inc(i,,n)a[i]=read(); a[++n]=l; sort(a+,a+n+); inc(i,,n)f[i][i][]=f[i][i][]=INF;
inc(i,,n)if(a[i]==l){f[i][i][]=f[i][i][]=; break;}
printf("%lld",min(dfs(,n,),dfs(,n,))); return ;
}

20161019

最新文章

  1. lua
  2. 1.1.1. Atitit Cocos2d-JS v3.x的问题
  3. Model元数据定制与Model模板
  4. [mysql]max_allowed_packet ,centos
  5. CSS选择器以及优先级与匹配原理
  6. linux压缩解压
  7. 状压DP
  8. 听说每天都要写随笔,word哥~
  9. python语言磁力搜索引擎源码公开,基于DHT协议
  10. BAE3.0搭建wordpress注意
  11. GROUP_CONCAT()多条数据.拼接字符串 最大长度1024
  12. Linux串口通信之termios结构体说明
  13. Window 中杀死指定端口 cmd 命令行 taskkill
  14. day059 ajax初识 登录认证练习
  15. 在Windows7上如何找到Cookie
  16. 【C++ Primer 第十三章】4. 拷贝控制示例
  17. django常用命令
  18. SOCKS5 协议解析
  19. bzoj4176. Lucas的数论 杜教筛
  20. matchmove流程中修改Maya相机数据的脚本

热门文章

  1. 重学 Java 设计模式:实战享元模式「基于Redis秒杀,提供活动与库存信息查询场景」
  2. StringBuilder(拼接字符串省内存)
  3. Linux环境下操作Oracle数据库命令
  4. 兄弟打印机MFC代码示范
  5. Thunk函数的使用
  6. eclipse .project文件 .classpath文件的作用
  7. Java WebService(实战) 简单实例
  8. 浅析Java中Ant的使用
  9. JavaWeb网上图书商城完整项目--验证码
  10. Python3-threading模块-多线程