字尾插到trie樹里。 把許多節點壓到一起。節點數量是o(n)的 節點可以記錄原串的起始終止位置。 可以查詢子串。
性質: lca深度為lcp長度 某個點的子樹葉子個數為點所代表的子串的出現次數。 按字典序dfs就是字尾排序結果。
求法:倍增,基於基數排序 對於sa lcp(i,j)=min(hei[i]) 可以列舉乙個k,去掉hei核心: 1.right集合 2.parent樹的聯絡 3
學習思考: 字尾樹 反串上建sam的parent樹就是字尾樹。 trie樹建字尾自動機
**求兩個串本質不同的公共子串個數
#號連線,然後跑字尾陣列
sa序列,記錄所屬的字串s1,或者s2
排列成形如:
s1s2
s2s1
s2s1
新出現的公共子串一定是s1,s2之間的height(例如s1,s2後s2,s1)
然後考慮再次出現的時候去掉之前出現過的。
發現就是之前上一次s1,s2的lcp位置取min過來的長度,減去即可。
總結 字尾平衡樹學習筆記
字尾平衡樹,就是動態的維護字尾陣列,可以 o log n 在末尾插入字元,o log n 查詢 rank,sa 但是由於是維護的字尾資訊,所以插入只能在末尾插入字元 然後轉化成在開頭加乙個字元 相當於新增乙個字尾。方法一 我們需要一種能比較兩個字尾大小的方法,最簡單就是二分 hash,o log n...
字尾陣列學習筆記
要用好字尾陣列要先理解裡面幾個陣列的概念 sa i 表示字典序第i大的字尾下標 字典序排名依次是1 len stri ng ra nk i 表示下標為i的字尾字典序排名 he ight i 表示sa i 和sa i 1 最長公共字首的長度.乙個性質 lc p su ffix i suff ix j ...
字尾陣列 學習筆記
字尾陣列是處理字串的強有力的工具 在字串處理當中,字尾樹和字尾陣列都是非常有力的工具。其實字尾陣列是字尾樹的乙個非常精巧的替代品,它比字尾樹容易程式設計實現,能夠實現字尾樹的很多功能而時間複雜度也不太遜色,並且,它比字尾樹所占用的空間小很多。可以說,在資訊學競賽中字尾陣列比字尾樹要更為實用。我們定義...