zoukankan      html  css  js  c++  java
  • hdoj 2059 龟兔赛跑

    http://acm.hdu.edu.cn/showproblem.php?pid=2059

    很显然的加血的那种类型的题目,比赛遇过一次。

    看上面这个图,就是到达每站的时候,把可能通过其他方式到达该站的时间都算出来,然后取最小值,

    View Code
    #include<iostream>
    #include<string.h>
    #include<stdio.h>
    #include<algorithm>
    #define maxn 10000
    #define inf ~0U>>1
    using namespace std;
    int dis[maxn];
    double dp[maxn];
    double min(double a,double b)
    {
        return a<b?a:b;
    }
    int main()
    {
        int l;
        int n,c,t;
        int v1,v2,v3;
        while(cin>>l)
        {
            cin>>n>>c>>t;
            cin>>v1>>v2>>v3;
            memset(dis,0,sizeof(dis));
            for(int i=1;i<=n;i++)
                cin>>dis[i];
            dis[n+1]=l;
            memset(dp,0,sizeof(dp));
            for(int i=1;i<=n+1;i++)
            {
                double Min=inf;
                for(int j=0;j<i;j++)
                {
    
                    int len=dis[i]-dis[j];
        double temp=len>c?1.0*c/v2+1.0*(len-c)/v3:1.0*len/v2;
                    temp+=dp[j];
                    if(j)temp+=t;//在j站要加血
                    Min=min(Min,temp);
                }
                dp[i]=Min;
            }
    
            if(dp[n+1]<1.0*l/v1)
            cout<<"What a pity rabbit!"<<endl;
            else
            cout<<"Good job,rabbit!"<<endl;
        }
        return 0;
    }
  • 相关阅读:
    HDU 3081 Marriage Match II
    HDU 4292 Food
    HDU 4322 Candy
    HDU 4183 Pahom on Water
    POJ 1966 Cable TV Network
    HDU 3605 Escape
    HDU 3338 Kakuro Extension
    HDU 3572 Task Schedule
    HDU 3998 Sequence
    Burning Midnight Oil
  • 原文地址:https://www.cnblogs.com/cs1003/p/2692399.html
Copyright © 2011-2022 走看看