AC自动机
KirinSB
这个作者很懒,什么都没留下…
展开
-
HDU 2222 Keywords Search(AC自动机)题解
题意:给你几个keywords,再给你一段文章,问你keywords出现了几次。思路:这里就要用到多模匹配算法AC自动机了,AC自动机需要KMP和字典树的知识,匹配时是在字典树上,失配我们就要用到类似KMP的失配值了,如果失配,我们就沿着失配值到某个节点开始匹配,因为是多模匹配,我们每次失配移动都会从某一keyword的某部分开始匹配,这样就节省了很多时间。话说第一次听到AC自动机我竟天真...原创 2018-07-26 19:10:50 · 149 阅读 · 0 评论 -
HDU 2896 病毒侵袭(AC自动机)题解
题意:给你n个模式串,再给你m个主串,问你每个主串中有多少模式串,并输出是哪些。注意一下,这里给的字符范围是可见字符0~127,所以要开130左右。思路:用字典树开的时候储存编号,匹配完成后set记录保证不重复和排序。代码:#include<cstdio>#include<vector>#include<set>#include<que...原创 2018-07-27 09:34:34 · 140 阅读 · 0 评论 -
HDU 3065 病毒侵袭持续中(AC自动机)题解
题意:要你找到主串中每个模式串的个数。思路:题目都没说是多组数据,结果没while(~)直接WA了,和上一题差不多,可以用map或者开个数组储存。指针要记得回收内存,不然MLE。#include<cstdio>#include<vector>#include<set>#include<map>#include<queue>...原创 2018-07-27 10:35:34 · 202 阅读 · 0 评论 -
HDU 2457 DNA repair(AC自动机+DP)题解
题意:给你几个模式串,问你主串最少改几个字符能够使主串不包含模式串思路:从昨天中午开始研究,研究到现在终于看懂了。既然是多模匹配,我们是要用到AC自动机的。我们把主串放到AC自动机上跑,并保证不出现模式串,这里对AC自动机的创建有所改动,我们需要修改不存在但是符合要求的节点,如果某节点的某一子节点不存在,我们就把这个子节点指向他父辈节点存在的该节点(比如k->next[1]不存在,k-&...原创 2018-07-28 10:00:53 · 251 阅读 · 0 评论 -
POJ 1625 Censored!(AC自动机->指针版+DP+大数)题解
题目:给你n个字母,p个模式串,要你写一个长度为m的串,要求这个串不能包含模式串,问你这样的串最多能写几个思路:dp+AC自动机应该能看出来,万万没想到这题还要加大数...orz状态转移方程dp[i + 1][j->next] += dp[i][j],其他思路和上一题hdu2457一样的,就是在AC自动机里跑就行了,不要遇到模式串结尾,然后最后把所有结尾求和就是答案。注意下题目说...原创 2018-07-28 12:03:01 · 136 阅读 · 0 评论