专栏文章
ARC204B Sort Permutation
AT_arc204_b题解参与者 3已保存评论 2
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mio9bj8v
- 此快照首次捕获于
- 2025/12/02 15:28 3 个月前
- 此快照最后确认于
- 2025/12/02 15:28 3 个月前
那我问你。

首先考虑这个最小操作次数是啥。我们将 连一条边,形成若干个环,设环数为 ,则为 。每个环是独立的,方案就是每次选择一条边 ,将 从环上删掉,若原来 则新的环上 。这样每次操作能归位一个。直到 和 形成了二元环,仅需一次操作。
考虑最大化得分,即 的次数。我们发现环可以随意断掉一条边变成一个链,会发现这样是不会使答案减小的。假设一对点要通过这条边产生贡献,那么可以在另一边先把环缩掉,使用另一条边。于是我们拍平成一条链,把链上每个点重标号一下变成 ,设第 个点原来的标号是 。删点的形式容易考虑一个区间 DP。设 表示从 到 的这条链上删点,最后仅剩了 的答案。转移枚举中点 ,有 。那么 即为答案。
这样直接做复杂度是 的,无法接受。你会发现这个转移是很多余的,考虑我们的操作形如若干个会产生贡献的点对 ,满足 ,每个 有一些东西内部消化掉,是子问题不用管它;而 中间没有任何贡献, 任意向右扩展即得 ,其中 。于是只要不产生贡献,区间拼接就是没有必要的,由中间向两边扩展亦可。
优化转移考虑分为产生贡献和不产生贡献的两部分,前者只需 即可;后者仍然需要枚举中点 ,但此时我们要求 ,这样的 数量不超过 个,提前存下来枚举之即可。时间复杂度降到了 。
这样做常数非常小,180ms 跑得飞快。至于文章开头的画面,是因为我犯【数据删除】使用了常数极大的断环成链。
代码。
相关推荐
评论
共 2 条评论,欢迎与作者交流。
正在加载评论...