P3426 [POI2005]SZA-Template 题解
结论题可爱
题意简述
给出一个字符串
思路分析及证明
首先可以想到
通过尝试,我们容易发现如下引理。
引理0:若
证明:构造一个映射即可,结论显然。
引理1:若
证明:设
- 若
,由于必然存在第一次印章使得 被印出,又必然存在最后一次印章使得 被印出,而 ,所以这两段合并后一定能够覆盖一个完整的 。 - 若
,则必然存在前若干次印章恰好印出 ,使得 ;同时,必然存在后若干次印章恰好印出 使得 。而 ,即 ,所以这两段合并后一定能够覆盖一个完整的 。
综上,引理1得证。
因此,我们发现
引理2:若
证明:分类讨论。
- 若
,结论显然成立。 - 否则,根据引理1,我们知道
都能恰好覆盖 的最长公共前后缀。若 最长公共前后缀为 ,则不存在两个不同的印章使得 能够被恰好覆盖。所以, 的最长公共前后缀不为 。那么可以得到: 都能够恰好覆盖 ( )。又根据引理1, 都能够恰好覆盖 。显然, 一定会在某次迭代中出现。又由于同时有两个不为串长的印章可以覆盖该串,所以在 出现前引理1一直成立。不断迭代下去,直到 同时能够恰好覆盖的串变为 。此时,我们推出 都能够恰好覆盖 ,即待证结论。
综上,引理2得证。
引理3:
证明:
首先根据引理1,
接下来讨论
因此,我们得到如下结论:
- 若
合法,则一定选取。 - 否则,没有转移方案,
只能取到 。
综上,引理3得证。
接下来,我们考虑如何检验
引理4:
证明:
对于
的状态,显然合法。 对于
的状态,一定是无法进行转移的,因为 的过程是一个单调不降的过程。 对于
的状态,假设 是一个合法的状态,则 必须能够恰好覆盖 。而能够恰好覆盖 的最小长度是 ,故推出矛盾。
综上,引理4得证。
至此,我们就做完了这道题。直抒胸臆,酣畅淋漓!
开一个桶存储一下最大的
代码
1 |
|