• hdu2059 dp


    哎,这题我能说想到增加起始和终结点的嘛,一直在想dp[i]和dp[i-1]的关系,然后c就很难处理...

    dp[i] = dp[j]+f(i,j)

    可以说很水嘛,要哭了

    //dp[i] = dp[j]+t(i,j) t(i,j)为i到j的时间
    //增加其实和终结点(技巧)
    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #include <cstdlib>
    #include <cstring>
    #include <string>
    #include <stack>
    #include <queue>
    #include <algorithm>
    
    const int inf = (1<<31)-1;
    const int MAXN = 102;
    using namespace std;
    
    int a[MAXN];
    double dp[MAXN];
    
    bool cmp(double a,double b){
        if(a-b>0)return true;
        else return false;
    }
    
    int main()
    {
        int l,n,c,t;
        int vr,vt1,vt2;
        while(~scanf("%d",&l)){
            scanf("%d%d%d",&n,&c,&t);
            scanf("%d%d%d",&vr,&vt1,&vt2);
            for(int i=1;i<=n;i++)
                scanf("%d",&a[i]);
            a[0] = 0;
            a[n+1] = l;
            double ts;
            for(int i=1;i<=n+1;i++){
                dp[i] = inf;
                for(int j=i-1;j>=0;j--){
                    if(c>a[i]-a[j])ts = (a[i]-a[j])*1./vt1;
                    else ts = c*1./vt1+(a[i]-a[j]-c)*1./vt2;
                    if(j!=0)ts += t;
                    dp[i] = min(dp[i],ts+dp[j]);
                }
            }
    
            if(cmp(dp[n+1],l*1./vr))
                cout<<"Good job,rabbit!"<<endl;
            else
                cout<<"What a pity rabbit!"<<endl;
        }
        return 0;
    }
    View Code
    在一个谎言的国度,沉默就是英雄
  • 相关阅读:
    Ajax的基本使用
    Jquery--动画
    JQuery基础(选择器、事件、DOM操作)
    LinQ 创建连接、简单增删改查
    分页查询/组合查询
    分页查询、组合查询
    JavaScript
    WebForm Response和Request以及Cookie
    Response、Request、QueryString,修改,Cookies
    Repeater
  • 原文地址:https://www.cnblogs.com/EdsonLin/p/5384997.html
Copyright © 2020-2023  润新知