0%

P4391 [BalticOI 2009] Radio Transmission 无线传输

题目内容

题目描述

给你一个字符串 s1s_1,它是由某个字符串 s2s_2 不断自我连接形成的(保证至少重复 22 次)。但是字符串 s2s_2 是不确定的,现在只想知道它的最短长度是多少。

输入格式

第一行一个整数 LL,表示给出字符串的长度。

第二行给出字符串 s1s_1 的一个子串,全由小写字母组成。

输出格式

仅一行,表示 s2s_2 的最短长度。

输入输出样例 #1

输入 #1

1
2
8
cabcabca

输出 #1

1
3

说明/提示

样例输入输出 1 解释

对于样例,我们可以利用 abc\texttt{abc} 不断自我连接得到 abcabcabcabc\texttt{abcabcabcabc},读入的 cabcabca\texttt{cabcabca},是它的子串。

规模与约定

对于全部的测试点,保证 1L1061\le L \le 10^6

思路讲解

给出子串,找出最短循环节。

最大公共前后缀。

结论就是N-pi[N]。其实我也不是很懂。

不能够使用二分,因为周期并没有单调性

image

把这个列出来以后,我们就知道了周期 p 的成立条件是什么。可以通过枚举 p,非常简单的使用字符串哈希检验答案。

AC代码

https://www.luogu.com.cn/record/221541535

心路历程(WA,TLE,MLE……)