后缀自动机 学习笔记

我还是也写个吧,方便复习,太容易忘了我。。

性质

1.节点p所代表字符串的长度为依次取 \((\ len[fa[p]],len[p]\ ]\) 中每一个数;\(len_{min}[p]=len_{max}[fa[p]]-1\)
2.\(SAM\)的点数不超过\(2n-2\),边数不超过\(3n-3\)
3.parent树从父亲指向儿子后,就是翻转字符串\(s\)后建立的后缀树(也是原串的反向前缀树)。
4.两个串的最长公共后缀的状态,位于这两个串状态在parent树上的LCA处。
5.从根节点走可以得到原串的所有子串。
6.每个点的 \(right\) 是其子树所有点的 \(right\) 的并集。即 \(right(p)\subset right(fa[p])\)
7.每个状态(节点)代表的所有串在原串中的出现次数和每次出现的右端点相同。

应用

参考

最长公共子串

两个串的最长公共子串SPOJ1811 LCS.
多个串的最长公共子串SPOJ1812 LCS2.

第K小子串

BZOJ3998 弦论

猜你喜欢

转载自www.cnblogs.com/SovietPower/p/9118563.html