三分套三分
Description
在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R。现在lxhgww想从A点走到D点,他想知道最少需要走多长时间
Samples
Input #1
1 | 0 0 0 100 |
Output #1
1 | 136.60 |
Hint
对于100%的数据,1<= Ax,Ay,Bx,By,Cx,Cy,Dx,Dy<=1000, 1<=P,Q,R<=10
Solution
首先显然我们一定走过的路径是$AE+EF+FD$, 其中$E,F$分别是$AB, CD$上的动点.
我们设$dis(A,B)$表示$A \to B$的最短距离, $(A, B)$表示直线$AB$, 那么答案就是:
$$\min_{E \in (A, B), F \in (C, D)} \frac{dis(A, E)}{p} + \frac{dis(E, F)}{r} + \frac {dis(F,D)}{q}$$
这是一个二元函数, 求其极值比较麻烦, 那么我们考虑主元法, 设$F$为主元, 也就是在原方程中把$E$当成常数处理.
那么这里的未知数就是$F$, 原函数可以转化为:
$$f(E) = \min_{F \in (C,D)} \frac{dis(E,F)}{r} + \frac{dis(F, D)}{q}$$
根据小学奥数 - 将军饮马问题, 我们可以知道这个单峰函数, 求其极值可以使用三分法.
三分$F$的坐标就可以得到以$F$为主元的最小函数值.
那么我们如何取得$\frac{dis(A, E)}{p} + f(E)$的最小值呢.
还是根据将军饮马问题, 我们可以得到这还是个单峰函数, 那么我们继续用三分法求极值.
综上, 三分套三分求解即可.
Code
1 | /* Headers */ |