hdu 2059 龟兔赛跑

//错误原因,除的时候要记得乘上1.0不然是不准确的 
#include<iostream>
#include<limits.h>
using namespace std;

int L,N,C,T,VR,VT1,VT2;
int p[105];
int i,j;
double dp[105];

int main(){
    while(cin>>L){
        cin>>N>>C>>T>>VR>>VT1>>VT2;
        for(i=1;i<=N;i++){
            cin>>p[i];
        }
        p[0]=0;
        p[N+1]=L;
        memset(dp,0,sizeof(dp));
        //起点作为0,终点作为n
        for(i=1;i<=N+1;i++){
            double Min=INT_MAX;
            for(j=0;j<i;j++){
                double t;
                if(j==0)
                    t=0;
                else
                    t=T;
                if(p[i]-p[j]>=C)
                    t+=C*1.0/VT1+(p[i]-p[j]-C)*1.0/VT2;
                else
                    t+=(p[i]-p[j])*1.0/VT1;
                if(Min>dp[j]+t)
                    Min=dp[j]+t;
            }
            dp[i]=Min;
        }
        if(dp[N+1]<L*1.0/VR)
            cout<<"What a pity rabbit!"<<endl;    
        else
            cout<<"Good job,rabbit!"<<endl;
    }
    return 0;    
}

你可能感兴趣的:(c)