码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ 1617 Usaco 2008 Mar. River Crossing渡河问题

时间:2018-02-01 21:12:23      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:cpp   bzoj   gpo   图片   alt   问题   .com   algorithm   inf   

技术分享图片

【题解】

  显然是个DP题。

  设$f[i]$表示送$i$头牛过河所需的最短时间,预处理出$t[i]$表示一次性送i头牛过河所需时间,那么我们可以得到转移方程:$f[i]=min(f[i],f[i-j]+t[j]+t[0])$ (这里的$t[0]$指的是FJ独自过河的时间)

  这样就可以做一个$n$方的DP了

#include<cstdio>
#include<algorithm>
#define rg register
#define inf (1e9)
#define N (100010)
using namespace std;
int n,m,f[N],t[N];
inline int read(){
	int k=0,f=1; char c=getchar();
	while(c<‘0‘||c>‘9‘)c==‘-‘&&(f=-1),c=getchar();
	while(‘0‘<=c&&c<=‘9‘)k=k*10+c-‘0‘,c=getchar();
	return k*f;
}
inline int min(int x,int y){return x<y?x:y;}
int main(){
	n=read(); t[0]=read(); 
	for(rg int i=1;i<=n;i++) t[i]=read()+t[i-1];
	for(rg int i=1;i<=n;i++){
		f[i]=inf;
		for(rg int j=1;j<=i;j++) f[i]=min(f[i],f[i-j]+t[j]+t[0]);
	}
	printf("%d\n",f[n]-t[0]);
	return 0;
}

  

BZOJ 1617 Usaco 2008 Mar. River Crossing渡河问题

标签:cpp   bzoj   gpo   图片   alt   问题   .com   algorithm   inf   

原文地址:https://www.cnblogs.com/DriverLao/p/8401222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!