之前刷了会儿dp,看到这题,一开始想就是dp,后来想歪,头绪一直理不对,
然后就参考了网上的。
下面已AC
#include<cstdio>
#include<cstring>
using namespace std;
#define MAX_N 100
#define INF 100000000
int L;
int N, C, t;
int v1, v2, v3;
int p[MAX_N + 5];
double dp[MAX_N + 5];
void solve()
{
double t1 = L * 1.0 / v1;
double t2 = C * 1.0 / v2;
double mixn;
double T = 0;
int temp;
dp[0] = 0;
for(int i = 1; i <= N + 1; ++i){
mixn = INF;
for(int j = 0; j < i; ++j){
temp = p[i] - p[j];
if(temp > C){
T = t2 + 1.0 * (temp - C) / v3;
}else{
T = 1.0 * temp / v2;
}
T += dp[j];
if(j){
T += t;
}
if(mixn > T){
mixn = T;
}
}
dp[i] = mixn;
}
if(t1>dp[N + 1])
printf("What a pity rabbit!\n");
else
printf("Good job,rabbit!\n");
}
int main()
{
while(scanf("%d", &L) == 1){
scanf("%d%d%d", &N, &C, &t);
scanf("%d%d%d", &v1, &v2, &v3);
for(int i = 1; i <= N; ++i){
scanf("%d", &p[i]);
}
p[0] = 0, p[N + 1] = L;
solve();
}
return 0;
}