知识点:DP
#include <cstdio>
int main()
{
int l;
while(scanf("%d",&l)!=EOF)
{
int n,c,t,vr,v1,v2;
scanf("%d%d%d%d%d%d",&n,&c,&t,&vr,&v1,&v2);
double dp[102]; //dp[i]表示从出发点到第i站所需最短时间
int d[102]; //d[i]表示出发点到第i站的距离
dp[0]=d[0]=0;
for(int i=1;i<=n;i++)
scanf("%d",&d[i]);
d[n+1]=l;
//总时间 = 从出发点到第j站的时间 + 从第j站充电然后到第i站的时间
for(int i=1;i<n+2;i++)
{
double min=1.0*l/v2;
for(int j=0;j<i;j++)
{
int len=d[i]-d[j];
double ti=j ? t : 0; //出发点不用充电
//"="右侧为:在第j站充电后到第i站所需时间
ti+=len>c ? 1.0*c/v1+1.0*(len-c)/v2 : 1.0*len/v1;
ti+=dp[j]; //加上从出发点到第j站所需的最短时间
if(min>ti) min=ti;
}
dp[i]=min;
}
puts(1.0*l/vr>dp[n+1] ? "What a pity rabbit!" : "Good job,rabbit!");
}
return 0;
}