PS:下面的圖截自skyh的PPT 水題再選講,先Orz爲敬。
弱週期引理
長度大於等於一半的串的匹配形成等差數列
長度大於等於|S|/2的border長度形成等差數列
迴文串的迴文後綴(border)長度可以表示成log個等差數列
本題做法
考慮這麼做的正確性,(以下只討論的情況,若小於顯然構不成等差數列,直接繼承是對的)。
我們繼承,實際上是想繼承 位置的值,而一定對應第 位置嗎?
如果在 這個區間中出現了 對應的串,由引理1, 這個串在 中的匹配一定構成等差數列,而 在 的開頭出現了,所以可以找到 的一個比 更小的週期,這與 是最大border矛盾,所以繼承不會出錯。
而引理2,3則保證了本題的複雜度爲
順帶一提,爲了方便轉移,實際上是存的當前等差數列除了開頭一項的貢獻,即:
Code:咕咕咕