字符串:AC自动机
文章平均质量分 91
ProLightsfxjh
这个作者很懒,什么都没留下…
展开
-
HDU - 2457 DNA repair AC自动机+dp
题意:给出n个模式串,给出一个主串,要求在主创上改动尽可能少的字符,使任一模式串不在主串中出现。AC自动机+dp按照一般的 AC自动机+dp转移 的模式(套路)来做,与1月底做的一个经典例题题差不多 URAL - 1158 Censored! AC自动机+dphttp://blog.csdn.net/prolightsfxjh/article/details/54729646定义dpij表示主串上si字符自动机上的j节点时的最少方案。如果自动机上j节点的下一个节点ac.ch[j][k]; 0 <原创 2017-02-16 17:51:17 · 690 阅读 · 0 评论 -
URAL - 1158 Censored! AC自动机+dp
题意:给出n个不同的字符,用这n个字符构成长度为m的字符串,要求每个串的子串都不出现给定的p个串中的任一个,求满足要求的字符串的个数。AC自动机+dp因为构成的最终串是由一个字符一个字符添加到字符串尾部构成的,那么如果一个串的后缀如果恰好是某个给定串的前缀时,这个串就可能最终成为非法串。用k个给定串建立AC自动机,然后从根节点开始递推,dpij表示递推到第j个字符当前在自动机上的i号节点时的方案数,如果下一个节点是k,且不是危险节点,则把dpij加到dp[k][i+1]里,跑一遍,然后答案就是所有原创 2017-01-25 15:02:15 · 1039 阅读 · 0 评论 -
UESTC 8 God Only Knows! AC自动机
题意:给一个字符串s,然后给出n个字符串stri,问s的不包含任意stri串的子串的个数。AC自动机做了一晚上,终于用自己的方法过了,开心 Y ^ _ ^ Y。先用给出的n个串stri来建立AC自动机,其中在朴素AC自动机的基础上添加一个depth[MAX_SIZE]成员用来记录每个节点的深度。然后根据主串s在自动机上跑,碰到危险节点(即danger节点, 给定串stri的结尾节点是危险节点或者该节点的后缀节点是危险节点的节点)时,维护lastdanger 表示主串s已经出现过的stri中最靠近i原创 2017-01-25 23:46:07 · 919 阅读 · 0 评论 -
HDU - 2222 Keywords Search AC自动机
题意:给出n个字符串为这些字符串在主串s中出现的个数。AC自动机裸的AC自动机,注意下给定模式串可能有一些相同的串,然后按照主串在自动机上遍历即可。复杂度 O(n)原创 2017-01-26 21:17:16 · 448 阅读 · 0 评论 -
HDU - 3695 Computer Virus on Planet Pandora AC自动机+优化
题意:给出n个模式串,然后给出一个主串(不过给出的形式是[number]char[number]char),求在主串中模式串或者模式串的逆串能匹配的个数。AC自动机+优化用n个模式串建立AC自动机,然后按照主串正反读2遍就好了,然后就是注意优化,即避免重复访问,碰到危险节点计算以后就标记为-1,这样下次如果再遍历到自动机的这里就直接break然后去遍历主串的下一个字符就好。此外,常用的AC自动机的写法是用map<char, int> mp;来储存字母表的,这里要改成s[i] - 'A'直接上,比较前者是原创 2017-01-28 22:14:45 · 1067 阅读 · 0 评论 -
HDU - 5384 Danganronpa AC自动机、简单题
题意:给出n个主串、m个模式串,求每个主串Ai中这m个模式串出现的次数和。 AC自动机、简单题把n个模版串丢到一个队列里,然后读取m个模式串建立AC自动机,然后每个主串,按主串在AC自动机上遍历即可。注意此时的危险节点只能是模式串的结尾。复杂度 O(n*length)原创 2017-01-28 23:30:48 · 615 阅读 · 0 评论 -
HDU - 2825 Wireless Password AC自动机+状压dp
题意:给出一个字符串集合,集合里包含m(m <= 10)个长度不大于10的字符串,要求构造长度为n(1<=n<=25)的字符串且子串中至少出现k个集合里的字符串,求方案数 MOD 20090717。AC自动机+状压dpAC自动机上统计类的dp问题,dpijs表示在处理主串第i个字符遍历到了AC自动机上的j号节点s且当前构造成的字符串中包含的集合信息s时的方案数。这里的s是一个长度为10的二进制数(表现形式为32位的带符号),第i位为1则表示构造出的字符串中包含了给定集合中的第i个字符串。若dpijs原创 2017-05-18 21:35:02 · 1174 阅读 · 0 评论 -
UESTC 1709 DNA序列 AC自动机+dp+矩阵快速幂优化
题意:给出m(0<=m<=10)个模式串(0<len<=10),用AGTC构造长度为n的字符串,要求每个串的子串都不出现给定的n个串中的任一个,求满足要求的字符串的个数。AC自动机+dp+矩阵快速幂优化因为构成的最终串是由一个字符一个字符添加到字符串尾部构成的,那么如果一个串的后缀如果恰好是某个给定串的前缀时,这个串就可能最终成为非法串。用k个给定串建立AC自动机,然后从根节点开始递推,dpij表示递推到第j个字符当前在自动机上的i号节点时的方案数,如果下一个节点是k,且不是危险节点,则把dp原创 2017-07-18 22:11:41 · 1145 阅读 · 0 评论 -
Gym - 101174E Passwords AC自动机+额外的限制条件+状态压缩dp
题意:给出n个由小写字母模式串,用大写字母、小写字母、十进制数字构造的长度为[A, B]的字符串,且满足一下限制条件:1、必须有至少一个大写字母至少一个小写字母和一个数字。2、不包含任一模式串(不区分大小写)。3、对于o、i、e、s、t,在模式串时和0、1、3、5、7不区分。求构造出的满足条件的字符串种数。AC自动机+额外的限制条件+状态压缩dp首先这题的原始版本是 给出n模式串,构造不含任一模式串的长度为m的字符串种类数 http://blog.csdn.net/prolightsfxjh/a原创 2017-07-20 00:12:47 · 1978 阅读 · 0 评论