Xenia and String Problem
考虑由于好串的定义,导致长度一定为 \(2^i-1\),所以总数是 \(O(n\log n)\) 的,考虑像构建 st 表一样求出所有好串。
修改一个字符看做先删再加,删会导致所有包含这个字符的好串无效,加的贡献分为三种情况。
-
左右合法且相等,中间字符出现次数过多。
-
左右合法,但是不相等,发现只有左右的中心不同才可能有贡献,检验可以看左右 lcp 长度是否符合条件。
-
左右有一个不合法,修改后可以相等,考虑左右的是否仅在那一个点出不同,可以求 lcp 检验。
答案就是不变的 ans 加上最多能使 ans 增加多少。
求 lcp 可以 SA 预处理,总复杂度 \(O(n\log n)\)。