字尾自動機的妙用

2021-08-14 09:47:47 字數 363 閱讀 6530

1.當串的長度較小的時候(<10000) 而詢問某子串在另一串出現次數的較多,可以考慮遍歷全部子串(離線只需o(n^2)),優於詢問乙個乙個子串(o(q*len))

2.當串的長度較長時,而詢問某子串在另一串出現次數的較少,可以考慮將串的每個字首在另一串的right集合記錄下來,因為子串一定是原串乙個字首的字尾,那麼問題就轉化為查詢len(原串長度)個子串中的字尾,對於字尾自動機,如果查的串是另乙個串的字尾,那麼第乙個串在字尾樹上一定是第二個的祖先。只需從第二個的right集合出發往上,往上爬的過程可以用樹上倍增優化,從而獲得o(len+q*log len)的優秀單次查詢複雜度(預處理o(len*log len)也可以接受)

[apio2014]回文串

未完待續

字尾自動機

基礎知識 step i 表示的是字串i在原字串中的位置。pareint i 表示root到parent i 的子串是root到i的最長字尾。字尾自動機遍歷可以得到原字串的所有子串。特殊技巧 一 字尾自動機的不同子串數有兩種求法 1.ans step i step parent i 1 i cnt 2...

字尾自動機

常用於處理字串問題,可以高效解決許多字串問題。有點像將乙個字串的所有字尾都建在乙個ac自動機上,但不同的是字尾自動機的節點數最多為2 n,因為它只記錄需要記錄的點,一些沒有記錄東西的點可以視為與下面有價值的節點並在一起,這樣大大降低了時間複雜度和空間複雜度。對於每乙個節點記錄它的後面加上每個字元後字...

字尾自動機

基礎學習 簡潔明瞭的講解 總狀態數不超過2n 12n 1 2n 1 包括初始狀態 統計每個end po sendpos endpos 等價類出現位置數量時,要按長度從長到短的計算cnt cntcn t。那為什麼一定要從長到短呢?比如回文自動機就直接是按照節點編號從大到小計算cnt cntcn t 罪...