P3966 [TJOI2013]单词

【模板】AC自动机(二次加强版)

【模板】AC自动机(二次加强版)

对于 \(S\) 的每一个前缀,先在对应位置打上标记(因为 AC 自动机 Fail 的性质),然后我们对 Fail 树来一遍拓扑排序,类似树上差分的思路,不停地累计即可(为什么能累计:因为 AC 自动机 Fail 的性质)。

扩展

其实P3966 [TJOI2013]单词和这道题一模一样。

因为我们只要把所有小的串拼成一个大的(记为 \(S\) ),然后两道题就一样了(注意拼的时候要有间隔符)。

同样,这道题也有另外一种很好的做法,就是还是考虑 AC 自动机的性质,其实我们分析本质,这里我们根本不用拼起来,只需要在插入的时候一边插入一边打标记即可,最后上传是一样的。

posted @ 2021-04-19 20:00  __Anchor  阅读(48)  评论(0编辑  收藏  举报