字串 Lyndon分解

2022-05-11 05:53:28 字數 563 閱讀 4713

lyndon串:當且僅當字串 \(s\) 的字典序嚴格小於其所有字尾的字典序時,字串 \(s\) 是lyndon串。當且僅當字串 \(s\) 的字典序嚴格小於其所有非平凡迴圈同構串的字典序時,字串 \(s\) 是lyndon串。

lyndon分解:字串 \(s\) 的lyndon分解為 \(s=w_1+w_2+\cdots +w_n\) ,其中所有的 \(w_i\) 都為lyndon串,並且他們的字典序按非嚴格單調遞減排序,即 \(w_1\geq w_2\geq \cdots \geq w_n\) 。這樣的分解存在且唯一。

duval演算法:時間複雜度 \(o(n)\)

vectorduval(string const& s) 

while (i <= k)

}return fac;

}

最小表示法:尋找字串 \(s\) 的最小迴圈移位同構串。對字串 \(s+s\) lyndon分解,找到唯一的那個跨越兩個字串交界的lyndon串,輸出這個lyndon串的開頭位置在原串對應位置的前n個字元。

(好像這東西沒什麼用啊,字尾陣列不比這簡單?)

分解字串

按要求分解字串,輸入兩個數m,n m代表輸入的m串字串,n代表輸出的每串字串的位數,不夠補0。例如 輸入2,8,abc 123456789 則輸出為 abc00000 12345678 90000000 分析思路 1.獲得字串的長度length後,判斷與 要輸出位數n 的大小,大於n的話,直接 pr...

LOJ 129 模板 Lyndon 分解

傳送門 由於ll l串是不增的 可以發現一定連續一段l ll串相同 於是考慮先分割成單減的,然後每一部分按迴圈節分割 考慮假設已經求出了1.i 11.i 1 1.i 1的lynd on lyndon lyndon 分解且恰好分解完 考慮從i ii開始,設j,k j,kj,k兩指標,初始j i k i...

XSY3905 字串題(lyndon串,構造)

字串題 設所有長度不超過 n 的串的集合為 s 考慮找到一種方法,能夠對乙個 lyndon 串 a 直接求出 a 的下乙個 lyndon 串。方法如下 先將 a 不斷複製,取出前 n 位作為新的 a 即 a leftarrow aaa 的前 n 位。如果 a 的最後一位是 a m 1 即字符集中最大...