题号:NC204317
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
小A是奔赴在抗疫一线的一名医生,每天为了尽快的从休息点赶到医院,他都骑着自己的自行车。
作为奔赴在抗疫一线的医生,他们每天的休息时间都比较少,所以他们要精打细算自己要花多上时间在路上。
为了简化计算,我们设置上班的路线模型如下:
- 休息点到医院是一条直线。
- 自行车可以以
的加速度前行,由于车辆的性能很好,速度没有上限,无需考虑相对论效应等其他因素。 - 自行车的刹车很灵,可以瞬间减速或停车。
- 当然,作为遵守交规的公民,我们不能闯红灯。
- 路上的红绿灯以固定的周期在红绿灯之间变换,没有黄灯。
现在给定路上的相关信息,你可以帮他算一算他最短需要花多久才能从休息点直奔抗疫一线呢?
输入描述:
程序包括多组用例,请处理到输入结束。
对于每组用例,第一行包括一个浮点数
和整数
,分别代表医院离休息点的距离和路上的红绿灯数量。(
)
接下来
行,每行包括三个浮点数
,分别表示第
个红绿灯距离休息点的距离,红绿灯的红灯时间和绿灯时间。所有的红绿灯在开始的时候均为红灯,在
的时候第一次为绿灯。(
)
数据保证
各不相同。
输出描述:
对于每组用例,输出一个浮点数,表示最短从休息点到医院的时间,保留3位小数。
示例1
输入
复制
410.0 2
200.0 15.0 15.0
225.0 31.0 10.0
410.0 2
200.0 15.0 15.0
225.0 35.1 15.0
410.0 2
200.0 15.0 15.0
225.0 45.0 10.0