AC自动机
文章平均质量分 62
wwyx2001
OIer----这条路,仅一人独行
展开
-
字符串应用之AC自动机
AC 自动机的用处:查询目标串中出现了哪些模式串(即文本字符串 s 中出现了哪些字典中的单词) 一种字符串上的 DP Fail 树应用AC 自动机的算法分三步:构建所有『单词』的 Trie 树构建失配指针模式匹配过程1.void trie(){int now=0,l=strlen(st);for (int i=0;i { int x=st[原创 2017-01-22 21:15:32 · 402 阅读 · 0 评论 -
[BZOJ1009][HNOI2008]GT考试(AC自动机+矩阵加速dp)
题目:我是超链接题解:沃日后天省选了而我还在填坑 好吧看着这个范围我觉得应该是矩乘,那么不能包含某个字符串肯定是AC自动机+矩乘的套路 我们来看一下DP状态设计:f[i][j]表示第i位匹配到AC自动机的第j位有多少方案 如果暴力DP的话,f[i][j]向i+1转移,枚举0~9,如果下一个节点不是end节点那么我们就可以继续转移 【要注意end节点的传递性。】 那么我们发...原创 2018-04-04 14:00:55 · 260 阅读 · 0 评论 -
[BZOJ3530][SDOI2014]数数(AC自动机+数位dp)
题目:我是超链接题解:我们先把数字串安置在AC自动机上 f[i][j][0/1][0/1]表示第i位数,匹配到AC自动机的第j个节点,现在是否填过不为0的数,是否卡上界的方案数 处理前导0的时候就是如果前面没有填过不为0的数那么一直停留在AC自动机的根节点 注意fail指针的下传 这个前导零是个什么情况呢?N=111 00∈S 那么001也是合法的啊 这个第四维表示是否卡...原创 2018-03-06 09:43:28 · 212 阅读 · 0 评论 -
[BZOJ3881][Coci2015]Divljak(AC自动机+fail树+lca+树状数组)
题目:我是超链接题解:实际上的问题就是给出了一些短串,和一些长串,问每个短串出现在了多少个长串中。 我们将短串加入trie,然后建立AC自动机,构建出trie树。 先考虑一个比较暴力的思路,假设长串中的某个位置匹配到了AC自动机中的x节点,那么x节点在fail树上到根路径上的所有短串的结尾节点的end都要+1。我们的题就fail了,这样好慢啊以上这种区间修改单点查询的问题...原创 2018-03-05 14:57:31 · 282 阅读 · 0 评论 -
[BZOJ2938][POI2000]病毒(AC自动机+dfs)
题目:我是超链接题解:简单的来说,就是构造一个只含0和1的字符串,不能与Trie完成匹配(即包含病毒代码)。我们采用深搜的方式,往构造的字符串中添0或1。对于每个位置now,vis表示这个位置往后能不能添加成功,如果成功就立刻返回,不成功就继续找路,怎么都不能成功只能返回0了要注意is_end节点的传递性,即如果fail是end,这个节点也要是end,否则会WA。代码:...原创 2018-03-12 14:39:57 · 195 阅读 · 0 评论 -
[BZOJ2754][SCOI2012]喵星球上的点名(AC自动机+fail树+容斥+lca)
题目:我是超链接题解:第一问是求每个短串出现在多少个长串里。有了上道题目的经验我们可以求一个短串里有多少长串出现,即以短串end节点为根的fail树中有多少个不同的长串节点。加入点名串,求fail树,枚举每一个长串lca容斥。这里一开始我匹配的姿势似乎不太对劲,每个点匹配到的应该是在AC自动机里最深的点。第二问是求每个长串中出现了多少短串,在fail树上的表示方法也就是长串...原创 2018-03-08 08:05:01 · 410 阅读 · 0 评论 -
【luogu2292】[HNOI2004]L语言
期中不能完美落幕,或许给不久的期末留下微光原创 2017-05-05 20:16:52 · 399 阅读 · 0 评论 -
[BZOJ2434][NOI2011]阿狸的打字机(AC自动机+树状数组)
题目:我是超链接题解:很久之前的题解了,现在重新看了一下这道题目,自己做到70pts就做不下去了70pts:我们知道如果串x在串y中出现,那么在fail树中y的某个/些节点会在x的子树里,而x在y中出现多少次就是y的多少个节点在x的子树中。然后我们按照长串排个序,长串相同的一起做,每次把长串所有的节点在树状数组中标记一下,然后使用这个长串的短串用dfs序查询子树和100pts:上面的70pts最大...原创 2017-01-24 16:59:06 · 449 阅读 · 0 评论 -
[BZOJ1030][JSOI2007]文本生成器(AC自动机+dp)
今天依然是飘逸的自己呢(划掉原创 2017-03-17 10:27:27 · 368 阅读 · 0 评论 -
[BZOJ3172][TJOI2013]单词(AC自动机+fail树)
ヾ(o◕∀◕)ヾ 脑袋仿佛进了水一般蜜汁兴奋ヾ(◕∀◕o)ヾ原创 2017-03-16 20:33:31 · 270 阅读 · 0 评论 -
[HDU2896]病毒侵袭(AC自动机)
wtt:人家上海高一的语文作业:回家好好看电视《朗读者》(划掉东营:语文:周记摘抄写金榜;生物/物理:大本小本一遍过; 英语:A版B版必刷题; 政治:黑题白题背笔记; //数学:一本大本和小本;原创 2017-03-16 16:28:33 · 299 阅读 · 0 评论 -
[HDU3065]病毒持续侵袭中(AC自动机+fail树)
loser get Shallwe告白*1原创 2017-03-18 19:03:40 · 318 阅读 · 0 评论 -
AC自动机学习笔记
Q:给出一坨短串,给出一个长串,求有多少个短串在长串中出现了。 A:把短串丢进trie树,建立fail指针,把长串在trie树上匹配,暴力蹦fail即可。每一个点只会被蹦一遍,打标记即可。Q:给出一坨短串,给出一个长串,求每一个短串在长串中出现了多少次。 A:把短串丢进trie树,建立fail指针,把长串在trie树上匹配,能匹配上的点size都+1,然后建立fail树,统计每一个转载 2017-01-24 17:00:44 · 337 阅读 · 0 评论 -
[HDU2222]Keywords Search(AC自动机)
点击打开链接AC自动机模板#include #include #include #define N 10000*50+10using namespace std;char st[N],ss[1000005];int tot=0,ch[N][30],fail[N],is_end[N];bool visit[N];void trie(){ int now=0,l=strle原创 2017-01-23 15:43:13 · 309 阅读 · 0 评论 -
【loli的胡策】训练1.7(hash+记忆化搜索+AC自动机+矩阵优化dp)
T1[BZOJ2462][BeiJing2011]Matrix题解:今天对于这道题有一个很清晰的思路,想着把一维hash写对,可是一维一拍一个错?!后来把一维的交上然后A了,再拍也是对的,这都什么啊这都是。 其实很简单啦,就是把每一行建立一个hash,然后暴力寻找就行啦代码:#include <cstdio>#include <cstrin...原创 2018-01-07 21:56:41 · 435 阅读 · 0 评论