P3966 [TJOI2013]单词

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

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

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

扩展

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

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

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

原文地址:https://www.cnblogs.com/Akmaey/p/14678456.html