P3435 Solution
画个图:
显然四个黄色部分是相等的。也就是说,黄色部分是 A 的一个 border。
根据题目,周期的长度也就是 Q 的长度,也就是 A 的长度减去它的某个 border 的长度。
现在要求这个最大,由于 A 的长度固定,要求的也就是 A 的最小 border 长度。
根据 KMP 求出来的 nxt
数组的定义,我们可以每次暴力跳 A 的 nxt
,直到最后一个不为 \(0\) 的就是最小的了。
但是这样复杂度可能会退化为 \(\mathcal O(n^2)\)。思考一下,可以用类似路径压缩的方法,每次求完后把 nxt[i]
赋值为跳到的值。这样复杂度是 \(\mathcal O(n)\) 的。