【Atcoder ARC060F】最良表現 / Best Representation

Atcoder ARC060 F

题意:给一个串,求将其分成最少的没有循环节的串的种数。

思路:先求KMP的\(fail\)数组。然后发现最少的串数只有三种可能:\(1\)\(2\)\(n\)

然后就可以用KMP找原串的循环节,如果原串没有循环节,那么不用分。如果原串的循环节为\(1\),则要分成一个一个的,如果循环节为\(2\),则要看每个前缀和后缀是否有循环节,如果对于一个前缀即与之相邻的后缀都是无循环节的,那么答案数要\(+1\)

猜你喜欢

转载自www.cnblogs.com/denverjin/p/10468350.html