ARC060D Best Representation
题意:若一个串不是整循环串,称之为好串。
给出一个字符串
求出
如果这不是个 ARC 题,咋一看确实挺唬人的……
若
中只有一种字符,则只能拆分为 段,每段一个字符。 若
本身为好串,则保留本身。
接下来只需要考虑
此时可以发现,最小段数一定是
证明:
- 结论:对于周期
的整循环串 ,拿去最后一个字符后,一定不是整循环串。
于是,我们将
切分为 即可构造两段的方案。 下面是结论的证明:
记
的最小正循环节为 ,记 ,且 的最小整循环节为 。 由于
之中必有一个是奇数,不难证明 。 于是,根据弱周期引理,
是 的周期,显然,也是整周期。 由于
是 的最小整周期,则必有 。 我们知道
,故 。另一方面,显然有
,故 。这说明
都是同一个字符。由于整个串不都是同一个字符,故 必然是不同的字符。此时
必然不是整循环串,矛盾。- 结论:对于周期
然后我们只需要枚举每种切分,并判断每个 前/后 缀是否为正循环串即可。
- 结论:对于整循环串
, 的最小周期同时也是 的最小整周期。
那么,我们使用
复杂度