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=;
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=;i<=n;i++)
cin>>w[i]>>t[i][i],
t[i][i]=L/t[i][i],
w[i]+=w[i-];
for(int i=;i<n;i++)
for(int j=i+;j<=n;j++)
t[i][j]=max(t[j][j],t[i][j-]);
f[]=t[][];
for(int i=;i<=n;i++){
f[i]=1e6;
for(int j=i;j>=;j--){
if(w[i]-w[j-]>W)
break;
f[i]=min(f[i],f[j-]+t[j][i]);
}
}
printf("%.1lf\n",f[n]*60.000);
return ;
}
vijos[1355]车队过桥问题的更多相关文章
- 线性dp
线性dp应该是dp中比较简单的一类,不过也有难的.(矩乘优化递推请出门右转) 线性dp一般是用前面的状态去推后面的,也有用后面往前面推的,这时候把循环顺序倒一倒就行了.如果有的题又要从前往后推又要从后 ...
- 【BZOJ 1061】【Vijos 1825】【NOI 2008】志愿者招募
http://www.lydsy.com/JudgeOnline/problem.php?id=1061 https://vijos.org/p/1825 直接上姜爷论文... #include< ...
- [BZOJ2072][POI2004] MOS过桥
Description 一个夜晚一些旅行者想要过桥. 他们只有一个火把. 火把的亮光最多允许两个旅行者同时过桥. 没有火把或者多于2个人则不能过桥.每个旅行者过桥都需要特定的时间, 两个旅行者同时过桥 ...
- vijos P1915 解方程 加强版
背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...
- vijos P1780 【NOIP2012】 开车旅行
描述 小\(A\)和小\(B\)决定利用假期外出旅行,他们将想去的城市从\(1\)到\(N\)编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市\(i\)的海拔高度为 ...
- 【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险
http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊 ...
- 【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流
http://www.lydsy.com/JudgeOnline/problem.php?id=1065 https://vijos.org/p/1826 好难的题啊TWT ∈我这辈子也想不出来系列~ ...
- [题解]vijos & codevs 能量项链
a { text-decoration: none; font-family: "comic sans ms" } .math { color: gray; font-family ...
- [题解]vijos 运输计划
Description 公元 2044 年,人类进入了宇宙纪元.L 国有 n 个星球,还有 n−1 条双向航道,每条航道建立在两个星球之间,这 n−1 条航道连通了 L 国的所有星球.小 P 掌管一家 ...
随机推荐
- umeng 渠道统计ios
1. 使用前提:需要在工程中添加依赖框架:AdSupport.framework 和 Security.framework 2.在AppDelegate.m文件中的-(BOOL)application ...
- android加固系列—1.如何检验so文件是否加壳成功
程序对so文件加壳后,如何验证是否加壳成功呢,首先除了能在应用中正常运行外,还要用IDA来检测: 绿色乱码表示rr这个函数成功加密: 工具下载,可支持动态调试版:
- Android NDK编译本地文件以及引用第三方so文件
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_LDLIBS :=-llog LOCAL_MODULE := DeviceAPI LO ...
- iOS-RunTime
原帖:http://www.cnblogs.com/Mike-zh/p/4557014.html 1.Runtime简介 因为Objc是一门动态语言,所以它总是想办法把一些决定工作从编译连接推迟到运行 ...
- Android开发拾遗(一)用Wi-Fi连接adb
可以用Wi-Fi通过标准的TCP/IP连接来连接Android设备. 这在开发监听USB相关事件的应用程序时会特别有用,原因是USB连接会起到干扰作用,比如USB的连接/断开事件. 首先要像通常一样用 ...
- php 图片上传 使用微秒做文件名
$m = microtime ();$mtime = explode(' ' ,$m);$mtime1 = $mtime[1];$mtime2 = substr($mtime[0], 2, 6);$p ...
- 使用xmarks同步 chrome ie firefox safari书签
xmarks是什么? Install Xmarks on each computer you use, and it seamlessly integrates with your web brows ...
- Helpful Tool
Remote Connectivity Analyzer(Online) https://testconnectivity.microsoft.com/ https://technet.microso ...
- Javascript之旅——第十一站:原型也不好理解?
写到这篇,我的js系列也快接近尾声了,所以这个系列不会遗留js来实现面向对象的核心——原型,有些人说原型不好理解,其实嘛,要想系统 的理解原型,最便捷的方式就是看看经典的书,少看些博客,博客这东西只是 ...
- (转)Java 详解 JVM 工作原理和流程
作为一名Java使用者,掌握JVM的体系结构也是必须的.说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言.Java类文件格式.Java虚 ...