#P2744. Atomic Car Race
Atomic Car Race
题目描述
在2020年,将举办一场原子能驱动的赛车比赛。与现今的赛车比赛不同,燃料问题不再是车队的关注重点。赛车可以在整个赛程中无需加油持续行驶。取而代之的关键因素是轮胎(tyre)。车队需要精心规划赛车的轮胎更换策略。
比赛是在一条设有n个检查点的道路上进行的。这些检查点距离起点的位置分别为(单位:公里)。第n个检查点是终点。在第i个检查点(),赛车可以选择更换轮胎。当然,车队也可以选择不更换。更换轮胎需要花费秒(包括刹车和加速的时间)。如果选择不更换轮胎,则在检查点不会损失时间。
赛车在刚更换轮胎后的一段时间内无法全速行驶,因为轮胎温度低于设计最佳值。而长时间不更换轮胎时,赛车也会因轮胎磨损导致抓地力不足而无法全速行驶。赛车从公里行驶到公里所需的时间(秒)由以下公式给出,其中表示自上次更换轮胎(或起点)后行驶的距离(非负整数,单位:公里),、、和为给定常数:
$$\frac{1}{v - e \times (x - r)} \quad (\text{当} x \geq r \text{时}) $$$$\frac{1}{v - f \times (r - x)} \quad (\text{当} x < r \text{时}) $$你的任务是编写一个程序,确定最优的轮胎更换策略,使得赛车到达终点的总时间最短。
输入格式
输入包含多个数据集,每个数据集对应一个比赛场景。数据集的格式如下:
n
a1 a2 ... an
b
r v e f
各项输入的含义已在题目描述中说明。如果一行包含多个输入项,它们之间用空格分隔。
是不超过100的正整数。是满足的正整数。是不超过100.0的正小数。是满足的非负整数。、和均为正小数。可以假设且。
输入以一个单独的行"0"表示结束。
输出格式
对于每个数据集,输出一行一个小数,表示采用最优策略时赛车到达终点的总时间(秒)。输出行不应包含多余的空格等字符。
答案的误差不应超过0.001。可以输出任意多的小数位数,只要满足上述精度条件即可。
示例输入与输出
输入数据 1
2
2 3
1.0
1 1.0 0.1 0.3
5
5 10 15 20 25
0.15
1 1.0 0.04 0.5
10
1783 3640 3991 4623 5465 5481 6369 6533 6865 8425
4.172
72 59.4705 0.0052834 0.0611224
0
输出数据 1
3.5397
31.9249
168.6682
来源
Japan 2005