CF1393E2 Twilight and Ancient Scroll

顯然有一個 \(|S|\log |S|\) 的 dp 做法,但是瓶頸在給字符串排序。也就是真正的瓶頸在於求 lcp。AFewSuns 給出了一種不需要科技的做法,orz。

第一個排序的部分,令 \(t_{i,j}\) 代表第 \(i\) 個字符串去掉第 \(j\) 個字符後的字符串,要給所有 \(t_{i,j}\) 排序。注意到相同顏色段是可以縮起來的,從後考慮每個連續段和下一個連續段,設爲 \(c_1,c_2\),如果 \(c_1<c_2\),那麼刪去一個 \(c_1\) 肯定是不優的,同理刪去 \(c_1\) 後比任意一個後面的都不優,所以刪 \(c_1\) 一定是在最後面,對稱的 \(c_1>c_2\) 就在最前面。

現在比較完了同一字符串,接下來比較的是兩個相鄰的字符串。分類討論刪去的是 \(j,k\),如果 \(j\le k\),分成了三個部分。\([1,j-1],[k+1,n]\) 這兩個部分都可以預處理 lcp,中間部分也可以預處理錯位 lcp。\(j\ge k\) 也是類似的,但是分類討論比較麻煩。

好像討論完這些也沒什麼細節了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章