qoj6350. MIT

https://qoj.ac/problem/6350

\(k\) 固定的版本:https://qoj.ac/problem/2065

先转成 Cyclic Distance 的版本:对于所有 \(k\),求出选 \(2k\) 个点,最大的 \(\sum_{i=1}^{k} dis(p_i,p_{i\bmod k+1})\)

首先可以猜测一个结论:选 \(x+1\) 个点的最优方案是在选 \(x\) 个点的方案上加一个点。

我们需要 加一个点,并且让答案的增加量局部最优。考虑点集的带权重心,则答案为:选中的点到带权重心的距离之和 *2。

实时维护出加 \(2k\) 个点后当前点集的带权重心(选中为 1,不选中为 0).

然后依次加入两个点,每次加的一定是离带权重心最远,且没被选中的点。可以实时维护剩余点集的直径,check 直径的两个端点。

点集大小从偶数变成奇数时,重心可能会发生变化,需要 check 一下是否改变。

posted @ 2023-07-06 15:39  Rainbow_qwq  阅读(370)  评论(0编辑  收藏  举报