HDU 2059 龟兔赛跑 简单DP

来源:互联网 发布:superjunior厂牌知乎 编辑:程序博客网 时间:2024/05/16 23:57

简单dp题目(不过我是弱菜,看了好久。。)

贴代码(AC 15MS)

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;const int MAX = 105;const double INF = 0x7f7f7f7f;double p[MAX], dp[MAX];int main(){    double l, vt_ele, vt_foot, vr_foot, dis_ele, ele_t, len, time;    int n;    while(~scanf("%lf", &l))    {        scanf("%d%lf%lf", &n, &dis_ele, &ele_t);        scanf("%lf%lf%lf", &vr_foot, &vt_ele, &vt_foot);        for(int i = 1; i <= n; i++)            scanf("%lf", p + i);        p[0] = 0;        p[n + 1] = l;        dp[0] = 0;        for(int i = 1; i <= n + 1; ++i)        {            dp[i] = INF;            for(int j = 0; j < i; ++j)            {                len = p[i] - p[j];                if(len > dis_ele)                    time = dis_ele / vt_ele + (len - dis_ele) / vt_foot;                else                    time = len / vt_ele;                time += dp[j];                if(j > 0)                    time += ele_t;                dp[i] = min(time, dp[i]);            }        }        if(dp[n + 1] > l / vr_foot)            printf("Good job,rabbit!\n");        else            printf("What a pity rabbit!\n");    }    return 0;}