
AC自动机
Bahuia
软件工程博士
展开
-
HDU - 2222 AC自动机模板题
题意:多个模式串在文本串中匹配。思路:AC自动机模板,AC自动机其实就是KMP与Trie的结合。代码:#include using namespace std;const int SIGMA_SIZE = 26;const int MAXNODE = 500010;const int MAXS = 1e4 + 10;map ms;struct Aho原创 2017-02-18 15:35:00 · 403 阅读 · 0 评论 -
UVAlive 3490 AC自动机+(整数)高斯消元
题意:题目链接:https://vjudge.net/problem/UVALive-3490 给出一个字符串S和前n个英文大写字母,组成一个字符串,当构造出子串S时停止,则该字符串期望长度是多少。思路:AC自动机+高斯消元,与HDU 5955一个套路:http://blog.youkuaiyun.com/bahuia/article/details/53034010 这题坑的时直接用double的高斯消元原创 2017-09-20 10:43:15 · 575 阅读 · 0 评论 -
HDU - 5955 AC自动机 + Gauss消元
题意:N个人玩游戏,每个人心中猜测一个只允许有1到6数字,且长度为l的序列,题目保证任意两个人猜测的序列不完全相同。有一个色子,每次可以掷出1到6的任意数字,色子会永远不停的投掷,从而形成一个无限长的随机序列,问某一时刻,某个人所猜测的序列证号是这个序列末尾l个字符的概率是多少,输出每个人的概率。思路:lrj的《训练指南》上的ac自动机章节有过类似的题型,所以看到这种题,数据量也不大,首先考虑搞一个原创 2016-11-04 13:46:46 · 1432 阅读 · 0 评论 -
HDU 6208 AC自动机
题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6208 给出n个字符串,要求找到一个字符串包含其他所有的字符串。思路:肯定是最长的那个字符串,如果存在两个不一样的额且长度都是最长的字符串,就肯定找不到。否则就用AC自动机跑一遍所有的串即可。代码:#include <bits/stdc++.h>using namespace std;#def原创 2017-09-18 15:59:06 · 888 阅读 · 0 评论 -
HDU 6138 AC自动机
题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6138 给出n个字符串,m个询问,询问x和y两个字符的最长公共子串的长度,而且要求这个子串为这n个字符串中任意一个(或多个)的前缀。思路:AC自动机。 每个节点end数组都保存当前节点到根节点的距离。将n个字符串保加入AC自动机。然后对x在自动机上跑一边标记节点,然后再对y跑一遍,遇到标记的节点原创 2017-09-15 20:42:55 · 344 阅读 · 0 评论 -
HDU 4057 AC自动机+状压dp
题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4057 要求构造一条长度为l的字符串,构造的字符串中若含有给出的子串,就可以加上该子串的权值,但是同一子串只能算一次权值,问构造的字符串最大权值多少。思路:看到n只有10,典型的AC自动机状压的思路,dp[x][y][S]保存构造到第x个字符,到达结点y,且含有子串的状态为S是否可能,直接转移最后原创 2017-09-07 11:26:10 · 356 阅读 · 0 评论 -
HDU 2457 AC自动机+dp
题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2457 给出只包含AGCT四个字符的基因序列,其中给出n个字符串,要求序列中不含有这些子串,问最少改变多少个字符?思路:AC自动机+dp,不能存在的子串构成一个AC自动机,然后在自动机上dp,dp[x][y]表示第x个字符已经到了自动机结点y之后能修改的最少步骤。判断字符是否需要修改,然后转移即可原创 2017-09-07 11:19:58 · 345 阅读 · 0 评论 -
HDU 4758 AC自动机+状压dp
题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4758 一个矩形从左上角走到右下角,向右移动用R表示,向下移动用D表示,要求满足移动序列中含有给出的两个规定子串,问一共有多少种方案?思路:还是经典的AC自动机+状压DP思路,类似HDU-2825:http://blog.youkuaiyun.com/bahuia/article/details/771490原创 2017-09-07 17:17:12 · 499 阅读 · 0 评论 -
HDU 6086 AC自动机+状压dp
题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6086 给出m个单词,要构造出长度为2*L的包含这全部m个单词的字符串,并且保证这个字符串非对称,其中字符只包括0和1,问一共有多少种构造方法。思路:本题是hdu2825的拓展,建议先做2825,博客链接:http://blog.youkuaiyun.com/bahuia/article/details/77原创 2017-08-13 19:48:16 · 1536 阅读 · 2 评论 -
HDU 2825 AC自动机+状压dp
题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2825 给出m个单词,要构造出满足包含其中k个单词的字符串,字符只包括小写字母,问长度为n的这样的串有多少个。思路:经典的AC自动机dp问题,这里需要状态压缩保存构造过程中已经找到的单词状态,令dp[i][j][k]表示当前已经构造了i个字符,在ac自动机上跑到结点j,且单词状态为S情况下的方案数原创 2017-08-13 19:12:57 · 652 阅读 · 0 评论 -
HDU 4511 AC自动机+DP
题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4511 中文题。思路:常见的思路,不过要注意x和y要用double,否则溢出。代码:#include <bits/stdc++.h>using namespace std;const double INF = 1e20;const int MAXN = 505;const int K =原创 2017-09-22 17:29:24 · 589 阅读 · 0 评论