1 条题解
-
0
自动搬运
来自洛谷,原作者为

Monomial
?搬运于
2025-08-24 23:10:09,当前版本为作者最后更新于2025-04-18 10:46:17,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
初始有一个上界为 次,下界为 次的做法:我们考虑直接用线段树的形式进行合并,每层余下来的一个扔出来最后用已经成为全集的合并,容易证明扔出来的个数 ,那么这些都可以有一个匹配的来合并。
然后考虑如何对一些情况将上限优化到 次。容易发现 为奇数(无法砍半)和 (已经到下界)的情况无法再去优化,只能对 的情况优化,其中 为奇数。
我们把整个序列分成 段,每段长度 ,先在段内用 次合并,然后再把每个段砍半,分成前部和后部,我们每次用一个段的后部对位匹配另一个段的前部即可。
接下来利用倍增的思路,我们要求每次操作后一个集合包含了连续 个段的信息,可以直接往后找第一个没有合并的位置,次数为 ,这个时间复杂度 ,空间 ,或者精细实现一下,时空复杂度 。
upd on 2025.07.22:
前面有很多胡言乱语,提供一下更好写的方法。
实际上,我们可以对于 的情况,按长度为 分块。每次用上面的方法倍增做匹配。而对于 的情况,我们可以取最大的 使得 ,然后先把后面 个在前面每个找对应匹配一下,接下来对 个做倍增,最后再把最后的 个补成全集。
这样可以少写很多东西,时间复杂度还是 。
- 1
信息
- ID
- 11567
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 6
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者