AC自动机
Sirius_Ren
▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇自己刮~~~
展开
-
BZOJ 2553 AC自动机+矩阵快速幂 (神题)
思路: 我们先对所有读进来的T建一个AC自动机 因为走到一个禁忌串就需要回到根 所以呢 搞出来所有的结束点 或一下 fail指针指向的那个点然后我们就想转移 a[i][j]表示从i节点转移到j节点的概率 如果能够转移到 ans+=1÷alphabet 这里有一个trick 建一个size+1节点 如果回到了根 就连到size+1 a[size+1][size+1]=1 这样就原创 2016-12-09 16:14:59 · 687 阅读 · 0 评论 -
BZOJ 3172 AC自动机
思路: AC自动机 不可以存下所有的字符串 怎么办呢 维护一个sum 使路径上所有经过的点 sum[x]++在求fail指针的时候 顺便搞了个BFS序吧 倒着(顺着fail指针)往回加一下sum 就好啦//By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace原创 2016-12-09 16:17:59 · 359 阅读 · 0 评论 -
BZOJ 3940 AC自动机
思路: 需要维护一个栈的AC自动机……. 要求出来 最后的栈顶是在自动机上的哪个节点。if(!ac.ch[st[tp-1]][a[i]-'a']) st[tp]=ac.ch[ac.f[st[tp-1]]][a[i]-'a']; else st[tp]=ac.ch[st[tp-1]][a[i]-'a'];如果ch[][] 到不了根 就要走到fail //By SiriusRen #inclu原创 2016-12-09 16:32:23 · 675 阅读 · 0 评论