zoukankan      html  css  js  c++  java
  • vijos[1355]车队过桥问题

    描述

    现有N辆车要按顺序通过一个单向的小桥,由于小桥太窄,不能有两辆车并排通过。另外,由于小桥建造的时间已经很久,只能承受有限的重量,记为Max(吨)。管理员将N辆车按初始的顺序分组,每次让一个组过桥,并且只有在一个组的车辆全部过桥后,下一组车辆才能上桥。每辆车的重量和最大速度是已知的,而每组车的过桥时间由该组中速度最慢的那辆车决定。请你帮管理员编一个程序,将这N辆车分组,使得全部车辆通过小桥的时间最短。

    格式

    输入格式

    文件的第一行有3个数字,分别为Max(吨),Len(桥的长度,单位km),N(3个数之间用一个或多个空格隔开)。接下来又N行,每行两个数,第i行的两个数分别表示第i辆车的重量w(吨)和最大速度v(km/h)。

    max,len,w,v不超过32位有符号整数类型的最大值,且为整数
    n<1000

    输出格式

    文件只有一行,即全部车辆通过小桥的最短时间(minute),精确到小数点后一位。

    样例1

    样例输入1

    100 5 10
    40 25
    50 20
    50 20
    70 10
    12 50
    9 70
    49 30
    38 25
    27 50
    19 70

    样例输出1

    75.0

    限制

    1 second

    题解

    一道需要注意细节的动态规划题

    思路是比较清晰的,细节是要注意long long和double间的转换问题先预处理数据,用t[i][j]对应车区间[i,j]的最大过桥时间,w[i]表示[1,i]车子重量的前缀和

    对于每辆车的最小过桥时间是没有后效性的,因此设f[i]对应第i辆车过桥的最小时间

    状态转移方程为

      f[i]=min{f[j-1]+v[j][i]}  (j∈[1,i])

    #include<cstdio>
    #include<iostream>
    using namespace std;
    const int N=1001;
    int n;
    double t[N][N],f[N];
    unsigned long long w[N],W,L;
    int main(){
        ios::sync_with_stdio(false);
        cin>>W>>L>>n;
        for(int i=1;i<=n;i++)
            cin>>w[i]>>t[i][i],
            t[i][i]=L/t[i][i],
            w[i]+=w[i-1];
        for(int i=1;i<n;i++)
            for(int j=i+1;j<=n;j++)
                t[i][j]=max(t[j][j],t[i][j-1]);
        f[1]=t[1][1];
        for(int i=2;i<=n;i++){
            f[i]=1e6;
            for(int j=i;j>=1;j--){
                if(w[i]-w[j-1]>W)
                    break;
                f[i]=min(f[i],f[j-1]+t[j][i]);
            }
        }
        printf("%.1lf
    ",f[n]*60.000);
        return 0;
    }
  • 相关阅读:
    2.12 使用@DataProvider
    2.11 webdriver中使用 FileUtils ()
    Xcode8 添加PCH文件
    The app icon set "AppIcon" has an unassigned child告警
    Launch Image
    iOS App图标和启动画面尺寸
    iPhone屏幕尺寸、分辨率及适配
    Xcode下载失败 使用已购项目页面再试一次
    could not find developer disk image
    NSDate与 NSString 、long long类型的相互转化
  • 原文地址:https://www.cnblogs.com/keshuqi/p/6071567.html
Copyright © 2011-2022 走看看