CF2085F1 题解
前言
最近状态好差好差好差好差。。。。。。好难受
思路
最小化交换次数这种东西嘛,一个常见的结论是维持中位数的位置不变,然后把两边的东西都聚拢到中位数的位置,证明可以用调整法。具体到这个题里,假设我们知道了最后要选哪些数,就可以直接算出答案为 ,其中 是中位数的排名(即 ,容易证明向上取整和向下取整无所谓,不影响正确性), 代表第 个选择的数的下标。
既然这个答案形式跟中位数强相关,我们直接枚举中位数在哪个下标 然后对所有答案取 。那么现在的目标是要在 左边选一半,右边选一半,凑出 内的所有数。
首先,上面贡献式子右边不带 的那一项是独立的,只需要关心左边。容易发现对于每个值 ,如果其在最后的答案中在 左边,那么此时 必定为满足 的最大 ,否则为满足 的最小 。设这两个位置分别为 和 。现在需要干的事情在 CF2140D 里亦有记载,先全都钦定选 ,然后调整一个 为 的代价是 ,直接对所有 排序然后取前 小的即可。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Misaka16172's Blog!
评论
re


