5. 传送带
成绩 | 10 | 开启时间 | 2016年09月2日 星期五 11:00 |
折扣 | 0.8 | 折扣时间 | 2016年09月5日 星期一 23:55 |
允许迟交 | 否 | 关闭时间 | 2016年10月10日 星期一 23:55 |
小明的飞机快要赶不上了!
幸好大厅的路上有一些传送带。每个传送带都有一定的速度,传送带之间没有重叠。
小明自己行走的速度为w,如果传送带的速度为v的话,在传送带上走的速度就是w+v。
但是小明还是很着急,所以他决定跑一段时间t。他跑的速度是r,那么如果传送带的速度为v的话,在传送带上跑的速度就是r+v。
对于时间t,他不一定要连续跑,可以走走再跑。也不一定非要跑够t。
问小明至少需要多少时间才能到达终点。
输入第一行为用例数T,1<=T<=40。
每一组用例的第一行包含五个整数:
X:为大厅的长度,小明起始位于0,终点是X,1<=X<=1000000
W:为走路的速度
R:为跑步的速度,1<=W<R<=100
t:最多能跑t秒,1<=t<=1000000
n:传送带的个数
接下来的n行,表示n个传送带的详细信息。每行包含三个整数:Bi,Ei,Vi,分别表示传送带的起始位置、终止位置和速度,0<=Bi<Ei<=X,1<=vi<=100。任意两个传送带都不相交。
输出包含一个数字,表示至少需要多少时间。输出四舍五入到6位小数。
测试输入![]() | 期待的输出![]() | 时间限制![]() | 内存限制![]() | 额外进程![]() | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
解题思路:
这道题有点长,每次一看到题目多的题目我就头疼哈哈哈,但往往输入比较复杂的题目思路都相对简单!相信我,没错的~
题目的大概意思就是我们每次输入几个传送带,并且规定了小明的步行速度和跑步速度,以及可以跑步的时间。也可以看做一个贪心问题,因为我们要尽快让小明到登记处。
错误思路:敲黑板!我刚开始错误的想法是,让小明快的时候尽可能快,那么就让小明跑在快的传送带上,但是结果一直WA。。。后来在大神们的提点下,贪心思路应该是让小明的平均速度尽可能快,那么首先应该使小明在越慢的传送带上,速度尽可能地快,注意地面可以看做速度为0的传送带,所以我们只需要对传送带进行排序,从速度最慢的开始跑,跑到没有时间后,小明再走,这样就得到正确解了!
结果: