#gigacode2019e. [gigacode_2019_e]車の乗り継ぎ
[gigacode_2019_e]車の乗り継ぎ
问题描述
Gigastreet是一条从西向东直线行驶的道路,长度为米。
E869120现在位于Gigastreet的西端,乘坐一辆以米/分钟的速度行驶的车,还剩下米可以走。
除此之外,这条街上还有辆车。第辆车位于离西端米的位置,以米/分钟的速度行驶,还剩下米可以走。
你希望从西向东驾驶车辆,到达Gigastreet的东端。
他可以在途中停下来并换乘其他车辆。换乘所花费的时间可以视为0分钟。
现在的问题是,他能否到达Gigastreet的东端?如果无法到达,请报告此情况;如果可以到达,请报告到达东端所需的最短时间(以分钟为单位)。
约束条件
- 是不同的数字
- 输入都是整数
部分得分
这个问题被分为几个子问题,只有当你对所有的子问题都给出正确答案时,才会被认为"解决了这个子问题"。
提交的源代码得分是所有子问题得分的总和。
- (9 分)
- (6 分) 或
- (22 分)
- (30 分) ,并且对于所有 ,
- (33 分) 没有额外的约束。
子问题 4 的提示
这个子问题是一个判断是否"可以到达东端"的问题。因为在所有地方以每分钟1米的速度前进,所以如果可以到达,最短时间将始终为分钟。尝试解决子问题 4 的人可以考虑这个提示。
输入格式
从标准输入读取输入数据。
输入具有以下格式:
: : :
输出格式
如果无论怎么做都无法到达Gigastreet的东端,请输出impossible
。
如果可以到达,请输出到达东端所需的最短时间(以分钟为单位)。输出可以包含任意位数的小数,但在答案误差(绝对误差或相对误差)不超过时才被认为是正确的。
示例 1
输入
3 10
1 5
3 5 8
6 10 5
7 2 7
输出
4.000000000000000000000
按照如下移动,在4分钟内可以到达Gigastreet的东端,并且这是最短时间:
- 首先,乘坐初始车辆行驶到离西端3米的位置。这需要3/1=3分钟。
- 然后,乘坐第1辆车行驶到离西端6米的位置。这需要3/5=0.6分钟。
- 最后,乘坐第2辆车行驶到东端(离西端10米的位置)。这需要4/10=0.4分钟。
- 总共需要3+0.6+0.4=4分钟,就可以到达东端。
示例 2
输入
3 10
1 5
3 5 8
6 1 5
7 2 7
输出
4.400000000000000355271
按照如下移动,在4.4分钟内可以到达Gigastreet的东端,并且这是最短时间:
- 首先,乘坐初始车辆行驶到离西端3米的位置。这需要3/1=3分钟。
- 然后,乘坐第1辆车行驶到东端(离西端10米的位置)。这需要7/5=1.4分钟。
- 总共需要3+1.4=4.4分钟,就可以到达东端。
示例 3
输入
2 10
1 4
3 1 2
6 1 10
输出
impossible
在这种情况下,无论如何都无法到达Gigastreet的东端。
此外,示例3是子问题4“,”的约束条件。
示例 4
输入
0 1
99991 1
输出
0.000010000900081007291
请注意,答案应该使用0.00001000090008
格式而不是1.00009e-05
格式。
此外,示例4是子问题1“”的约束条件。
示例 5
输入
1 100
5 60
50 7 90
输出
17.142857142857142349612
在这种情况下,最佳方式是在离西端50米的地方换乘。
此外,示例5是子问题2“或”的约束条件。
示例 6
输入
4 1000
37 426
725 16 612
237 19 458
516 13 509
408 17 400
输出
46.861585850556437549130
只要绝对误