yja[jzoj5606]
题意
在平面上找 $n$ 个点, 要求这 $n$ 个点离原点的距离分别为 $r_1, r_2, \cdots, r_n$。 最大化这 $n$ 个点构成的凸包面积。凸包上的点的顺序任意。
$n\leq 8,r_i\leq 1000$
题解
拉格朗日乘数法模板题。
由于 $n$ 比较小,我们可以暴力枚举这 $n$ 个点顺时针的顺序,一共有 $(n-1)!$ 种。$n$ 个点分别和原点连线,设这 $n$ 条直线的夹角为 $\alpha i$,显然 $a_i$ 不会超过 $\pi$ 。凸包面积为 $\frac{1}{2}\sum{i=1}^nr_ir_{i% n+1}\sin\alpha_i$。
好看一点,设 $R_i=r_ir_{i % n+1}$,我们需要最大化 $\sum_{i=1}^nR_i\sin \alpha _i$,满足条件 $\sum \alpha_i=2\pi$。
由拉格朗日乘数法的套路,设函数 $F(\alpha_1,\alpha_2,\cdots,\alpha_n,\lambda)=\sum_{i=1}^nR_i\sin \alpha i+\lambda(2\pi-\sum{i=1}^n\alpha_i)$。
求偏导数可得:
$$\frac{\partial F}{\partial \alpha_i}=R_i\cos {\alpha_i}-\lambda=0 \ \frac{\partial F}{\partial \lambda}=2\pi-\sum_{i=1}^na_i=0$$
也就是:$\cos \alpha_i=\frac{\lambda}{R_i}$。
当 $0\leq \alpha_i\leq \pi$ 时,$\cos \alpha_i$ 单调递减。
满足单调性,那么我们就可以二分这个 $\lambda$,然后就可以算出此时的 $a_i$ 了。
时间复杂度 $O(n!\log Ans)$。
注意二分的范围
程序
1 |
|