Q
猜了个错的结论然后以为KMP写挂(
首先显然我们发现可以固定前面的串不动,让后面的串转起来,具体的,如果前面的串可以分割成AB,则后面的串要求能分割成BA形式才算成功。
也就是说我们要对所有\([1,i]\)是字符串border的\(i\)算\([i+1,n-i]\)的border。
然后我直接猜了一个一定在A取最大的时候最优,然后每个包错一个点(
事实上不是这样的。设这个border的值为\(f_i\),则显然有\(f_i-2\leq f_{i+1}\),因为将\(i\)的border前后都拿掉就一定是\(f_{i+1}\)的border。
这样的形式还是不好处理,因此可以变形成\(f_{i}\leq f_{i+1}+2\),从中间往两边枚举,然后每个地方暴力哈希看是否匹配即可。时间复杂度\(O(n)\)
标签:分割,前面,POI2012,然后,leq,border From: https://www.cnblogs.com/275307894a/p/16992979.html