题目:
http://acm.hdu.edu.cn/showproblem.php?pid=2059
题目大意:
乌龟骑电动车每到一个充电站可选择充电或者不充,充电时间T,充完一次电可有电行驶距离C,有电行驶速度vr1,无电行驶速度vr2,p[1...N]为每个充电站到起点的距离,跑道总长为L,兔子速度为vr,求乌龟采用最佳策略是否能比兔子早到终点。
思:
起点无需充电已满(这里题目不严密未给出),dp[0]=0,dp[i]为乌龟到第i充电站所需时间,则dp[n]=min(dp[i]+time),time为从第i个充电站充完电到第n个充电站所需时间。
代码:
#include
double p[105];
double dp[105];
int main()
{
double L;
int N;
double C,T;
double vr,vt1,vt2;
while(~scanf("%lf",&L))
{
scanf("%d%lf%lf",&N,&C,&T);
scanf("%lf%lf%lf",&vr,&vt1,&vt2);
int i,j;
double rtime;
rtime=L/vr;//兔子跑完全程时间
for(i=1;i<=N;i++)
{
scanf("%lf",&p[i]);
}
p[0]=0;
p[N+1]=L;
dp[0]=0;
int flag=0;
for(i=1;i<=N+1;i++)
{
dp[i]=rtime+1;//初始化成比兔子晚到的时间
for(j=0;jrtime)
{
flag=1;
break;
}
}
if(flag)
{
printf("Good job,rabbit!
");
}
else printf("What a pity rabbit!
");
}
return 0;
}