AC自动机
L_0_Forever_LF
一个热爱OI的OIer
展开
-
BZOJ3172: [Tjoi2013]单词
多串匹配,AC自动机 建出fail树,那么一个点就对他的祖先产生贡献,每个点维护子树内的权值和,然后每个串的出现次数就是自动机上对应的点的值好像讲的不清不楚code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<原创 2017-02-11 11:02:34 · 724 阅读 · 0 评论 -
codeforces 585F. Digits of Number Pi
AC自动机和数位dp都写挂了….我是不是该退役了…问L~R有多少个数满足数字里包含一个长度至少为d/2的给定串的子串如果包含了一个长度大于d/2的子串,也一定包含长度为d/2的子串 所以相当于问L~R有多少个数满足数字里包含一个长度为d/2的给定串的子串 我们把原串所有长度为d/2的子串建到AC自动机上 因为d<=50,所以点数最大不超过25000(实际上最大值应该也比这个小很多) 所以就可原创 2017-09-21 16:47:42 · 481 阅读 · 0 评论 -
BZOJ3846: ZCC loves words
注意到模数5047621=179*173*163 拆成这3个质数算,EXCRT合并 建立AC自动机,在上面dp,套个矩乘 但是发现在i位置匹配一个长度为k的单词j,贡献是(i+k)*prime[j],对于不同的i贡献不同,又因为模数<200,最多只有100+种矩阵,处理出循环节就可以矩乘了code:#include<set>#include<map>#include<deque>#inc原创 2018-01-03 11:55:46 · 334 阅读 · 0 评论 -
BZOJ2434: [Noi2011]阿狸的打字机
阿狸的打字过程实际上是在建一个trie树,对这棵trie建立ac自动机的fail树后,问第x个串在第y个串中出现了多少次,相当于问y串有多少个前缀,在fail树中位于x的子树里 到这里其实好像离线一下就可以了?但还有另一种资瓷在线询问的做法 我们不可能对y串的每个前缀处理,因为这个trie树的建立可以让所有串的总长是n^2级别的 但其实在trie树上这样走造字符串,很多串有着很长的LCP,比...原创 2018-02-21 15:50:25 · 235 阅读 · 0 评论