acm2059
學長的幫助下寫的
?
#include<stdio.h>
double l;
double p[105];
double time[105];
int main(void)
{
int i,j;
double timet;
scanf("%lf",&l);
scanf("%d%d%d",&n,&t,&c);//加油站的個數 加一次油的時間 加一次油可以走的路
scanf("%d%d%d",&vr,&vt1,&vt2);//兔子的速度 烏龜騎車的速度 烏龜本身的速度
for(i=1;i<=n;i++)
scanf("%d",&p[i]);
p[0]=0;
p[n+1]=l;
timet=l/vr;
for(i=1;i<=n+1;i++)
{
min=0xfffff;
for(j=0;j<i;j++)//找到一個合適的加油站J
{
int len=p[i]-p[j];//從j到i的距離
double t1=len>c?t+(len-c)*1.0/vt2:1.0*len/vt1;
t1+=time[j];
if(j)//j加油站加油
t1+=t;
if(min>t)
min=t;
}
time[i]=min;
}
puts ( timet > time[n+1] ? "What a pity rabbit!" : "Good job,rabbit!" );
return 0;
}
/*思路:第二層循環從0到i找到一個最適合的加油站j 保證從起點到i的時間是最短的
這個最短的時間的值 =(從0到J點最短的時間(保存在bst{j}中))+在j的充電時間t+從j到i的時間 。
這個和的最小值就是這個最短的時間的值 再把這個時間存到bst[j]中 */
?
轉載于:https://www.cnblogs.com/aloney/p/4544583.html
總結
- 上一篇: hdu 1047 Integer Inq
- 下一篇: SSH实例(5)