下文中“答案”均为题目所求期望值乘
n,即
n 种可能性的时间
t 之和。
首先分析 Julia 的最优策略是什么。
设一种策略中,Jane 如果以
v1,v2,…,vn 的速度前进,那么 Julia 与她相遇的时间为
t1,t2,…,tn,不难发现
t1≥t2≥⋯≥tn。则此时答案为
i=1∑n(ti+VL−viti)=VnL+V1i=1∑nti(V−vi)。
设
p 为使得
∣vp−V∣ 最小的下标(这意味着
vp 是
v 中不小于
V 的最小值或者不大于
V 的最大值,这样定义是因为这两个值可能有一个不存在)。如果固定
tp,
tp 时刻 Julia 和 Jane 都固定在
L−tpvp 的位置,则:
- 对于 i<p,V−vi≥0,所以希望 ti 尽可能小,这说明 Julia 在 tp 时刻如果还没遇到 Jane,就会一直朝 Jane 以最大速度 V 前进;
- 对于 i>p,V−vi≤0,所以希望 ti 尽可能大。由于速度限制有 (L−vptp)−(L−viti)≤V(tp−ti),解得 ti≤vi+Vvp+Vtp。当 ti 取到最大值时,前一条不等式也取等。考虑从 tp 开始时间倒流回 0,Julia 从 L−tpvp “倒退”回 0 的过程,那么不等式取等就说明在 Julia 是以最大速度 V 从 L−tpvp 退回 L−tivi,所以可以看成 Julia 以最大速度 V 倒退回 0,并等到时刻 0。对应到正常的时间上,就是 Julia 先在 0 处等到时刻 tp−VL−tpvp,然后以速度 V 向 Jane 前进。
至此说明了 Julia 的最优策略可以表示为:取一个非负实数
x,先在
0 处等到时刻
x,如果还没遇到 Jane,就以全速
V 向
L 跑,直到遇到 Jane 后全速折返。由于 Julia 只会以速度
V 移动,第二、三部分的用时相等,那么可以将答案表示为关于
x 的函数:
F(x)=i=1∑nmin{viL,x+2×V+vimax{0,L−vix}}
设
I 为满足
vIL>x 的最大下标(不存在则为
0),可将上式重写为:
F(x)=i=1∑I(x+2×V+viL−vix)+i=I+1∑nviL=(i=1∑IV+viV−vi)x+i=1∑IV+vi2L+i=I+1∑nviL
所以
F 是一个分段函数,且每一段都是一次函数,而且最后一段斜率为
0。故最小值只会在所有拐点处取到,即只需要考虑
0 和所有
viL,不难做到
O(n)。