回 帖 发 新 帖 刷新版面

主题:〖题目描述〗

〖题目描述〗
GDOI工作组遇到了一个运输货物的问题。现在有N辆车要按顺序通过一个单向的小桥,由于小桥太窄,不能有两辆车并排通过,所以在桥上不能超车。另外,由于小桥建造的时间已经很久,所以小桥只能承受有限的重量,记为Max(吨)。所以,车辆在过桥的时候必须要有管理员控制,将这N辆车按初始顺序分组,每次让一个组过桥,并且只有在一个组中所有的车辆全部过桥以后才让下一组车辆上桥。现在,每辆车的重量和最在速度是已知的,而每组车的过桥时间由该组中速度最慢的那辆车决定。
现在请你编一个程序,将这N辆车分组,使得全部车辆通过小桥的时间最短。



输入格式:
数据存放在当前目录下的文本文件“bridge.in”中。
文件的第一行有三个数,分别为Max(吨),Len(桥的长度,单位:Km),N(三个数之间用一个或多个空格分开)。
接下来有N行,每行两个数,第i行的两个数分别表示第i辆车的重量(吨)和最大速度(m/s)。
注意:所有的输入都为整数,并且任何一辆车的重量都不会超过Max。



输出格式:
答案输出到当前目录下的文本文件“bridge.out”中。
文件只有一行,输出全部车辆通过小桥的最短时间(s),精确到小数点后一位。



输入输出样例:



 
 
 bridge.in 
 bridge.out 

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

回复列表 (共1个回复)

沙发

由于每辆车的速度重量都已知
把所有车按车速升序排序
速度最慢的放最前面
然后查找车重,不超重的前提下加入最大重量限度的车
如此做直至取空数组
(想法很局限,但是一时找不出更优解)

我来回复

您尚未登录,请登录后再回复。点此登录或注册