zoukankan      html  css  js  c++  java
  • 【Luogu】P1594护卫队(前缀和+DP)

    TM搞了半天的二维DP方程还是错的。

    这是题目链接:

     设f[i]表示前i辆车顺利通过的最小时间。

    则对于每一个i枚举该组车的起点j,然后从所有的f[j]+Min[j][i]中选一个最小的。

    Min[j][i]表示从第j辆车到第i辆车最慢的是个什么速度。

    #include<cstdio>
    #include<cctype>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    inline long long read(){
        long long num=0,f=1;
        char ch=getchar();
        while(!isdigit(ch)){
            if(ch=='-')    f=-1;
            ch=getchar();
        }
        while(isdigit(ch)){
            num=num*10+ch-'0';
            ch=getchar();
        }
        return num*f;
    }
    
    double f[1010];
    long long Min[1010][1010];
    long long ton[10000];
    long long que[10000];
    int main(){
        memset(Min,127/3,sizeof(Min));
        long long Max=read(),len=read(),n=read();
        for(int i=1;i<=n;++i){
            ton[i]=read()+ton[i-1];
            que[i]=read();
            for(int j=1;j<=i;++j){
                f[i]=0x7fffffff;
                Min[j][i]=min(Min[j][i-1],que[i]);
            }
        }
        for(int i=1;i<=n;++i){
            f[i]=f[i-1]+len*1.0/que[i];
            for(int j=i-1;j;--j){
                if(ton[i]-ton[j-1]>Max)    break;
                f[i]=min(f[i],f[j-1]+len*1.0/Min[j][i]);
            }
        }
        printf("%.1lf",f[n]*60);
        return 0;
    }
  • 相关阅读:
    分页存储过程
    调存储过程
    winform httplicent调用API
    存储过程,触发器,等等。。。
    C# AJAXform上传图片
    Mysql order by与limit联用出现的问题
    将Sublime Text 3 放到右键中
    Vue-cli构建步骤
    Javascript面试知识点
    position详解
  • 原文地址:https://www.cnblogs.com/cellular-automaton/p/7518779.html
Copyright © 2011-2022 走看看