题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059

 

代码如下,dp问题,简单题,不解释:

#include<stdio.h>
#include<string.h>
double sum[110];/////

int num[110];////
int L,N,C,Time,VR,V1,V2;

double find(int Len)
{
double ans;
if(Len>C)
ans=1.0*C/V1+1.0*(Len-C)/V2;
else
ans=1.0*Len/V1;
return ans;

}
int main()
{
int i,j;
double min,temp,t;
while(scanf("%d",&L)!=EOF)
{
memset(num,0,sizeof(num));
memset(sum,0,sizeof(sum));
scanf("%d%d%d",&N,&C,&Time);
scanf("%d%d%d",&VR,&V1,&V2);
for(i=1;i<=N;i++)
{
scanf("%d",&num[i]);
sum[i]=find(num[i]);
}
num[0]=0;
num[N+1]=L;
sum[N+1]=find(L);
if(V2>V1)
{
if(V2>VR)
{
printf("What a pity rabbit!\n");

}
else
{
printf("Good job,rabbit!\n");
}
continue;
}
for(i=2;i<=N+1;i++)
{
min=sum[i];
for(j=1;j<i;j++)
{
temp=sum[j]+Time+find(num[i]-num[j]);
if(temp<min)
min=temp;
}
sum[i]=min;
}
t=1.0*L/VR;
if(t<sum[N+1])
printf("Good job,rabbit!\n");
else
printf("What a pity rabbit!\n");

}
return 0;
}

 

posted on 2012-03-20 20:20  world_ding  阅读(268)  评论(0编辑  收藏  举报