广义 $SAM$ .
- 广义 $SAM$ ,就是在 $Trie$ 树上建 $SAM$ .注意到树上的每个串都可以看成以某个叶子节点为根的 $Trie$ 树上的一条路径.
- 而叶子节点数 $\leq 20$ ,所以可以以每个叶子节点为根建 $Trie$ 树,建的时候需要注意插入一个点时,将 $lst$ 置为其父亲在 $SAM$ 上对应的节点.
- 注意判重,即处理插入一个字符时, $lst$ 对应的转移边已经有点的情况.建好后就是问有多少个不同子串,每个点的贡献都是 $Max-Min+1$ .
1 |
|
夢はここに 思い出は遠くに
广义 $SAM$ .
1 | #include<bits/stdc++.h> |