【题解】[BOI2009]Radio Transmission

链接
感觉挺有意思的题...

题意

给你一个字符串 \(s_1\) ,它是由某个字符串 \(s_2\) 不断自我连接形成的。但是字符串 \(s_2\) 是不确定的,现在只想知道它的最短长度是多少。

样例

input #1
cabcabca
output #1
3

(#1 解释:(...ab)c abc abc a(bc...))

题解

首先 cabcabca 可以看成 abc...abc 的子串,意味着找出最小循环节 P ,满足原字符串是 sufP + N*P + preP 的形式。
想一下,也就是等价于 N*P + preP 的形式,发现 (N-1)*P + preP 是其一个公共前/后缀。
而对于一个字符串的公共前后缀,令原串减去公共后缀作为循环节 P ,也满足上述形式。
那么要求 P 的最小长度,就是求公共前后缀的最大长度,求一下 KMP 的失配指针,则 ans = N - f[N] 。

posted @ 2021-02-20 12:07  zrkc  阅读(54)  评论(0)    收藏  举报