随笔分类 -  字符串——字符串匹配——AC自动机

摘要:XII.[CFGYM100221C]Forbidden Subwords ”双向无限“之类东西太抽象了,我们不妨从简单点的地方考虑。比如说,有限串。 一个有限串中没有出现任何禁忌串的充要条件是什么?沿着AC自动机上边走时没有碰到任何结束点。 现在,我们考虑一个右侧无限的串(即有一个明确开头,但另一端 阅读全文
posted @ 2021-03-30 14:42 Troverld 阅读(62) 评论(0) 推荐(0) 编辑
摘要:XI.CF1437G Death DBMS 考虑建出AC自动机,然后在上面跑询问串。于是问题转为单点修改,路径求 max,无脑上树剖在fail树上维护即可。 注意到会有相同的串,那就在每个节点上一个multiset维护最大值即可。 复杂度 O(nlog2n)。 代码: #i 阅读全文
posted @ 2021-03-30 14:40 Troverld 阅读(51) 评论(0) 推荐(0) 编辑
摘要:X.[ICPC2019 WF]First of Her Name 这题的一种解法是把所有东西(名字串和翻转的询问串)建出一棵树来,然后跑树上后缀排序,用二分+哈希求出height数组,然后使用单调栈找出每个位置最多能够向左向右延伸多远。但是按照某人的说法出题人好像出了卡此算法的数据,所以最后WA 阅读全文
posted @ 2021-03-30 14:38 Troverld 阅读(135) 评论(0) 推荐(0) 编辑
摘要:IX.[BJWC2011]禁忌 老套路,建出AC自动机,并求出每个节点的ok。 之后呢? 考虑dp。 令fi,j表示在一个长度为i的串,当前在点j的可能性。 则有: 对于任意k[0,alphabet), 如果t[t[j].ch[k]].oktrue,那么$ 阅读全文
posted @ 2021-03-30 14:34 Troverld 阅读(63) 评论(0) 推荐(0) 编辑
摘要:"[SDOI2014]数数" 这题是AC自动机与各种dp相结合的范例。 首先,按照套路,我们建出~~自动AC机~~。然后,因为是N的所有数的总数,很容易想到 数位dp (实际上它如果是在L,R之间所有数的总数则更明显)。 令fx,len,lim表示: 在自动机上x号节点 阅读全文
posted @ 2020-04-26 17:42 Troverld 阅读(129) 评论(0) 推荐(0) 编辑
摘要:"CF GYM101741K. Consistent Occurrences" 题意:给你一个长度为n的串s,以及m次询问,每次给出一个串t,询问ts中最多出现了多少次(出现不能重叠)。 联想到前一题,我们可以将询问建树。 我们可以自然地想到,当匹配成功后,直接跳回根节点( 阅读全文
posted @ 2020-04-26 17:41 Troverld 阅读(141) 评论(0) 推荐(0) 编辑
摘要:"[JSOI2012]玄武密码" 一开始千方百计地想要对那个“母串”进行什么处理,最后也没有想出点什么。 后来发现这道题有点误导性,它没有说是“模式串”,而说是“询问”,因此就比较恶心。 闲话少说,这题正解是将“询问”离线建~~自动AC机~~,然后将“母串”丢进去匹配。(就是最模板的操作) 最后将“ 阅读全文
posted @ 2020-04-26 17:39 Troverld 阅读(101) 评论(0) 推荐(0) 编辑
摘要:"[POI2000]病毒" 只要前面那道文本生成器会的话,这题应该很简单了。 建树方法一模一样,甚至连求ok都一模一样。 之后采取dfs爆搜答案。 从根开始,只走ok=true的儿子,如果走出一个环,那就有合法串(把环的部分提取出来,在任意地方断环成链,再复制粘贴无数遍,就是一个合法的无限长 阅读全文
posted @ 2020-04-26 17:38 Troverld 阅读(109) 评论(0) 推荐(0) 编辑
摘要:"[JSOI2007]文本生成器" 第一题自己没看题解就做出来的~~自动AC机~~题祭。 一眼看出这道题正着求不好求,必须反过来,用总方案数 不合法方案数=合法方案数。 任意一种不合法的方案,在AC自动机上merge时,所遍历到的每一个节点,必定都不是任何串的结尾节点,同时它在fail树上的 阅读全文
posted @ 2020-04-26 17:37 Troverld 阅读(112) 评论(0) 推荐(0) 编辑
摘要:"[HNOI2006]最短母串问题" 好题。 首先建立AC自动机。~~然后就不会了。~~ 观察到n很小,是状压的级别。 考虑将自动机中的fin变量升级为state变量,表示从当前节点出发,能否到达各字符串。 则ins时,有 阅读全文
posted @ 2020-04-26 17:36 Troverld 阅读(115) 评论(0) 推荐(0) 编辑
摘要:"[NOI2011]阿狸的打字机" 这题可以大大加深我们对~~自动AC机~~的理解。 一上来:哇,这是什么神仙读入啊,如果按照它的要求一个一个把所有串建出来的话,肯定会MLE呀! 后来想一想,它这么读入,肯定构成一棵树,并且,它刚好是字典树! 这里是建树的方法。 阅读全文
posted @ 2020-04-26 17:34 Troverld 阅读(114) 评论(0) 推荐(0) 编辑
摘要:"[TJOI2013]单词" 近乎模板,只要暴力建树,再把每个字符串丢进去匹配就可以了。 我一开始写了非拓扑的代码,结果最后一个点T了。 不得不改成了拓扑。 另外,这题需要保存字符串信息,为了避免MLE,我们把所有东西全都压成一个大串。 代码: 阅读全文
posted @ 2020-04-26 17:31 Troverld 阅读(98) 评论(0) 推荐(0) 编辑
摘要:大家好,今天我们来扯~~自动AC机~~AC自动机了。 I.前置知识 trie树。(那些说需要kmp的,不会也没事,不过还是会方便理解一点)。 II.用途 AC自动机可以在O(Σ|S|)的时间内预处理,并在O(|S|)内求出一组模式串集在一个文本串中的出现次数。 换句话说,给你n 阅读全文
posted @ 2020-04-26 17:26 Troverld 阅读(138) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示