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

Perta
broken tower搬运于
2025-08-24 22:54:14,当前版本为作者最后更新于2024-01-08 20:01:24,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
官方题解对笔者而言较为抽象,本文仅提炼出了本题的解法而非解题思路。网上除了 pjudge 也找不到其他题解,组题时花了一些功夫。作为题解搬运工,对一些神奇想法的出处一概不知,所以凑合着看吧...
将原串划分为若干极长全 / 子串,例如 划分为 ,发现只需要考虑两种子串:长度为 的 & 长度大于 的。
用 表示长度为 的子串, 表示长度大于 的子串。设 为 的划分, 可以用 表示,例如上述串的划分 。
显然,两个串的 相等就意味着这两串是等价的。考虑一次操作对 的影响:
- 删除最左端或最右端的 ;
- 删除非最左端或最右端的 ,并将相邻的两个元素合并为一个 ;e.g.
我们略去的影响是 和 ,前者是无意义的,后者不会更优,所以略去。
现在, 能够被删空,等价于 可以由以上两种影响变空。
不妨将 分奇偶讨论。
可以通过打表或者惊为天人的灵感获得结论: 无法被删空,当且仅当 & 至少有连续的 个 在同一个连续段。
例如,当 时,以下形式的 无法被删空:
X1111XXXX XX1111XXX XXX1111XX XXXX1111X证明(构造方案)是容易的。
充分性:假设整个 中只有这 个 ,左侧有连续的 个 ,右侧有连续的 个 ,则最多删去 个 ,不止有 个 的情况就不用说了。
必要性:当 时一直删最中间这个 即可。若没有连续的 个 ,则任意两个相邻的 下标差 。我们选择与最中间的 的连续段相邻的两个 ,例如 ,观察 如何变化:
发现删除任意一边的一个 , 向另一边偏移一位且中间少一个 。
最坏情况中间连续的是 个 ,左边的 在 的位置,右边的 在 的位置。只删左边的 ,可以删 次,那么 对应到初始序列上的下标范围就是 ,也就是说右边的 某一时刻在 中的位置一定会是 ,此时再一直删这个 即可。
真的要去做的话很复杂,但是...
大胆猜测,若 可以被删空,一定存在 使得 均为奇且 可以被删空。
假设 可以被删空。由于 ,经过一系列操作,最后一定有 。此时有 ,则必然能还原出一对满足结论的 。
找划分点是容易的,判断每个前后缀是否合法即可。
实现采用链表,时间复杂度 。
- 1
信息
- ID
- 9684
- 时间
- 1000ms
- 内存
- 1000MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者