zoukankan      html  css  js  c++  java
  • ZJNU 1130 龟兔赛跑——中高级

    只需求出乌龟最短耗时跟兔子耗时比即可

    将起点 0 和终点 N+1 也看做充电站,进行动态规划

    对第i个点进行动态规划,则可以得到状态转移方程为

    dp[i] = max{dp[j]+time[i][j]} j∈[0,i]

    time[i][j]=max(不充电从i到j耗时 , 在i充满电后再到j耗时)

    最后将dp[N+1]与兔子耗时对比

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main(){
        int L,N,C,T,VR,VT1,VT2,p[105],i,j,dis;
        double time,dp[105];
        while(cin>>L>>N>>C>>T>>VR>>VT1>>VT2){
            for(i=1;i<=N;i++)
                cin>>p[i];
            p[0]=0;
            p[N+1]=L;
            fill(dp,dp+105,1e9);
            dp[0]=0.0;
            for(i=1;i<=N+1;i++)
                for(j=0;j<i;j++){
                    time=T;
                    dis=p[i]-p[j];
                    if(!j)
                        time=0.0;
                    if(dis<=C)
                        time+=1.0*dis/VT1;
                    else
                        time+=1.0*C/VT1+1.0*(dis-C)/VT2;
                    dp[i]=min(dp[i],dp[j]+min(time,1.0*dis/VT2));
                }
            if(dp[N+1]<1.0*L/VR)
                cout<<"What a pity rabbit!\n";
            else
                cout<<"Good job,rabbit!\n";
        }
        
        return 0;
    }
  • 相关阅读:
    TabControl
    Loading
    Dialog
    Combobox
    Markdown编辑器Editor.md使用方式
    XSS攻击
    跨域解决方案及实现
    angular4 自定义表单组件
    angular4 Form表单相关
    js 详解setTimeout定时器
  • 原文地址:https://www.cnblogs.com/stelayuri/p/12213260.html
Copyright © 2011-2022 走看看