题目描述
给出n个点分别到原点的距离
20%:n=3
40%:n=4
n≤8,ri≤103
分析
一定要注意凸包上不一定有所有n个点!
那么面积最大,当且仅当原点位处三角形的垂心。(证明?调整法)
n=4时,记得要判定退化成三角形的情况。
面积最大时是风筝型。(证明?调整法)
枚举凸包上点的排列后,实际上题目是要求这个
maximize ∑i=0nriri+1sinαi
s.t. ∑i=0nαi=2π
考虑用拉格朗日乘数法。
方便起见用向量表示。
v=(α0,⋯,αn),s=(r0r1,⋯,rn−1rn,rnr0),g(v)=∑i=0nvi
L(v,g(v))=s⋅v+λg(v)=0
∂L∂αi=sicosαi+λ=0⇔αi=arccos(−λsi)
∑i=0nαi=2π
讲道理n+1个方程n+1个变量可以强解,但是这里有三角函数,比较麻烦。
考虑arccos(x)有单调性
那么这里可以二分λ,从而求得满足条件,且各变量偏导皆为0的解即为条件最值。
(十分灵活地运用了拉格朗日乘数法)
其实拉格朗日乘数法就是多元函数求最值问题,给它套上了约束(也就是条件最值问题)。
可以发现它这样子构造出来的新方程组,恰好各分量偏导等于
时间复杂度
空间复杂度O(n)
插曲
在改题的时候第一次交T掉了,原因是因为数组开太大寻址太慢了233