#P2744. Atomic Car Race

Atomic Car Race

题目描述

在2020年,将举办一场原子能驱动的赛车比赛。与现今的赛车比赛不同,燃料问题不再是车队的关注重点。赛车可以在整个赛程中无需加油持续行驶。取而代之的关键因素是轮胎(tyre)。车队需要精心规划赛车的轮胎更换策略。

比赛是在一条设有n个检查点的道路上进行的。这些检查点距离起点的位置分别为a1,a2,,ana_1, a_2, \ldots, a_n(单位:公里)。第n个检查点是终点。在第i个检查点(i<ni < n),赛车可以选择更换轮胎。当然,车队也可以选择不更换。更换轮胎需要花费bb秒(包括刹车和加速的时间)。如果选择不更换轮胎,则在检查点不会损失时间。

赛车在刚更换轮胎后的一段时间内无法全速行驶,因为轮胎温度低于设计最佳值。而长时间不更换轮胎时,赛车也会因轮胎磨损导致抓地力不足而无法全速行驶。赛车从xx公里行驶到x+1x+1公里所需的时间(秒)由以下公式给出,其中xx表示自上次更换轮胎(或起点)后行驶的距离(非负整数,单位:公里),rrvveeff为给定常数:

$$\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

各项输入的含义已在题目描述中说明。如果一行包含多个输入项,它们之间用空格分隔。

nn是不超过100的正整数。a1,a2,,ana_1, a_2, \ldots, a_n是满足0<a1<a2<<an100000 < a_1 < a_2 < \ldots < a_n \leq 10000的正整数。bb是不超过100.0的正小数。rr是满足0ran10 \leq r \leq a_n - 1的非负整数。vveeff均为正小数。可以假设ve×(an1r)0.01v - e \times (a_n - 1 - r) \geq 0.01vf×r0.01v - f \times r \geq 0.01

输入以一个单独的行"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