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 掌管一家 ...
随机推荐
- Android Animation学习(三) ApiDemos解析:XML动画文件的使用
Android Animation学习(三) ApiDemos解析:XML动画文件的使用 可以用XML文件来定义Animation. 文件必须有一个唯一的根节点: <set>, <o ...
- Android Handler机制(二)---MessageQueue源码解析
MessageQueue 1.变量 private final boolean mQuitAllowed;//表示MessageQueue是否允许退出 @SuppressWarnings(" ...
- Android - 模块添加与编译
Android5.1 Ubuntu14.04 Android系统编译依靠.mk文件 添加google服务 我们自己的ROM里没有google服务 完整的google包里包含google框架和各种服务, ...
- Android ListViewview入门
接着上文<Android 数据库的事务>,往person数据表中插入50条数据 public void testAdd() throws Exception { PersonDao dao ...
- NSoperation线程通信
全局变量 @property (weak, nonatomic) IBOutlet UIImageView *imageView; @property (nonatomic, strong) NSOp ...
- (视频) 《快速创建网站》 2.3 WordPress初始化和功能简介
本文是<快速创建网站>系列的第4篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...
- 对于Kindle的分析
因为朋友的推荐,半年前开始接触Kindle,一直在使用Kindle读书.Kindle是亚马逊旗下的电子阅读app,可以在手机或平板电脑上下载使用.Kindle需要使用用户个人的亚马逊账号登陆,在亚马逊 ...
- Xcode同时兼容Xcode7和Xcode8,两个版本并存,也适用于先升8再安装7
先吐槽一下之前看到的一个教程,如下: 先在应用程序内,拷贝一份之前的xcode,然后再安装新版本,发现这种安装完成就是在之前上面迭代了 有木有?等于没任何作用 我这边就是不小心先升级了8,然后再安装 ...
- 1---------java调用NLPIR(ICTCLAS2016)实现分词功能
备注:win7 64位系统,netbeans编程 NLPIR分词系统,前身是2000年发布的ICTCLAS,2009年更为现名.张华平博士打造. 实现步骤: 1.在Netbeans中,文件→新建项目→ ...
- Unity3d Asset Server启动问题
周末机房停电后asset server无法启动,点击启动出现“asset server could not start server”. 几经周折,找到原来是用户问题,解决办法如下: 1.命令行输入“ ...