有关AC自动机的fail树

前言

由于AC自动机fail的作用老是忘
在这里记录一下,以后复习也方便

正文

首先,再字典树上,每个点的fail,指向的就是和这个节点所表示的串拥有最长公共后缀的节点
这个的话,在建立完字典树以后,直接bfs就可以弄出来了
然后AC自动机的经典例题,就是询问x在y里面出现了多少次
我们先在字典树上面遍历y
然后路上的每一个点跳fail,如果能跳到x的结束节点就ans++

但是这样的话,多次询问不支持
于是我们可以把fail反着建出来,容易知道这是一棵树
那么x在y里面出现了多少次
就相当于询问x的结束点的子树里面有多少个节点是y经过的

dfs序随意维护一下就好了

你可能感兴趣的:(字符串)