题解 [JSOI2019] 节日庆典
真的有人能在不知道结论的情况下做出本题吗?
先放结论:
对于每个前缀,有用的后缀只有 \(O(\log n)\) 个
证明是这样的:
考虑当前前缀的两个有效后缀 \(i, j\) 满足 \(|j|<|i|<2|j|\)
因为 \(j\) 是 \(i\) 的后缀且 \(j\) 仍是有效的,所以 \(j\) 也是 \(i\) 的前缀
那么 \(j\) 是 \(i\) 的 border
将 \(i\) 写成 \(AAB\),\(j\) 写成 \(AB\) 的形式(\(B\) 是 \(A\) 的严格前缀)
若 \(j\) 比 \(i\) 更优,则有 \(ABC<AABC\),所以 \(BC<ABC\),那么选择 \(B\) 这个后缀更优
所以相邻两个有效后缀之间长度至少 \(\times 2\)