hdu 2059 (龟兔赛跑)

dp   龟兔赛跑


题意:给出n个充电站的位置,每次充满电可以走Cm,问乌龟需要的最短时间。

题解:s=p[i]-p[j],分成两种情况  s>c和s<c   

<span style="font-size:18px;">#include<cstdio>
#include<algorithm>
#include<cstring>
#define M 10010010010
using namespace std;

int main(){
	int l,n,c,t,vr,vt1,vt2,i,j;
	double T1,T2,mint,ans,dp[110];//注意定义成double
	int p[110];
	int s;
	while (scanf ("%d",&l)!=EOF){
		scanf ("%d%d%d%d%d%d",&n,&c,&t,&vr,&vt1,&vt2);
		for (i=1;i<=n;i++){
			scanf ("%d",&p[i]);
		}
		p[0]=0;p[n+1]=l;dp[0]=0;
		for (i=1;i<=n+1;i++){
			mint=M;
			for (j=0;j<i;j++){
				s=p[i]-p[j];
				if (s>c)
				ans=c*1.0/vt1+(s-c)*1.0/vt2;
				else
				ans=s*1.0/vt1;
				ans+=dp[j];
				if (j)//是否充电
				ans+=t;
				if (mint>ans)
				mint=ans;
				
			}
			dp[i]=mint;
		}
		T1=dp[n+1];
		T2=l*1.0/vr;
		if (T1>T2)
		printf ("Good job,rabbit!\n");
		else
		printf ("What a pity rabbit!\n");
	}
	return 0;
}</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值