$SAM$ 的入门练习题.
- 先把 $SAM$ 建出来,每个节点的 $right$ 集合大小就是走到这个节点时对应的子串出现次数.
- 如果 $t=0$ ,那么这些位置只能被算一次,把每个点的 $right$ 集合大小都置为 $1$ ,否则就拓扑排序后(桶排),在$parent$ 树上递推得出真正的 $right$ 集合大小.
- 注意根节点处对应的子串都是空串,不能算入贡献,要把根节点的 $siz$ 置为 $0$ .
- 再在转移图中递推得到每个点能转移到的所有点的子串出现次数 $sum$ ,然后从根节点出发贪心走就好了.
1 |
|