![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
AC自动机
文章平均质量分 81
glq007
muyou
展开
-
HOJ 13108 Just Another Knapsack Problem (AC自动机+dp)
这套题是我们学长出的,质量都很高。不过我们OJ真的是太卡时间了。。题意很简单,给一个目标串,以及很多模板串,每个模板串都有个value,可以重复用,问拼成目标串得到的最大value是多少。学长的题解没有用AC自动机。貌似是说dp加字典树转移。没仔细看。不过这道题很明显的AC自动机啊。模板串构建完AC自动机后,把目标串放进去find一下,用dp[i]代表1到i都被拼完所能得到的最大val原创 2014-12-01 11:55:21 · 860 阅读 · 0 评论 -
UVA 11468 Substring(AC自动机+dp)
题意就是给你几个模板串,以及一些字符的出现概率,随机选择字符L次后得到一个长度为L的字符串,问这个字符串不包括任何一个模板串的概率。比较简单的题,把模板串构建成AC自动机,随机选择字符相当于在字典树里走一步,如果是单词节点处那么就不能走,或者走到没有点的位置,由于构造的是改造过的AC自动机所以直接由失配指针走到他下一个可能匹配的地方继续走。dp[i][j]代表还有i步要走,进入j节点的概率,记原创 2014-12-01 11:45:02 · 784 阅读 · 0 评论 -
UVALive 3490 Generator(AC自动机+dp+高斯消元)
题意就是,随机字母组成一个串,有一个目标串,当这个由随机字母组成的串出现目标串就停止,求这个随机字母组成串的期望长度。看了题解才知道的做法。首先肯定要把目标串弄到ac自动机里,当然kmp也一样因为就一个串,然后dp[i]表示从i这个节点走到末尾的期望长度,为何不是头走到i?因为失配指针的原因,因为可以知道这个节点如果失配下一个节点是什么,而要知道有几个节点失配后是这个节点则与前者是相反的。后者需要原创 2015-02-24 23:58:28 · 1138 阅读 · 0 评论 -
UVALive 4126 Password Suspects(AC自动机+dp)
题意就是长度为n的串,满足下列m个串是它的子串,问这个串有多少种,如果少于42种则字典序输出。dp[i][j][k]为,填充了i个字符,在ac自动机的j节点上,字串集合为k的方案数,填充i个字符可以从前往后,或者从后往前填,但是如果要用dfs,最好选用从后往前填,因为如果这样dp[i][j][k]肯定是由j这个节点选择a-z得到的dp转移过来的,但是如果从前往后,那么就要知道那几个节点能转移到原创 2015-02-25 00:12:37 · 1199 阅读 · 0 评论 -
HDU 2471 History of Languages(自动机BFS)
题意:给你2个DFA,问你是否等价,状态有n(1做法:由于那些不能到达终态的状态无论怎么样都是等价的,所以需要把到这些状态的转移设为-1,即不能到达。这个可以建立反向边然后BFS。用一个二元组(a,b)代表在第一个DFA中的a状态,在第二个DFA的b状态,如果已经走到这个二元的状态,如果一个是终态一个是非终态那么自然就不等价,下一个字母转移的地方如果一个是-1一个是可以转移的那么也自然不等价,原创 2015-04-18 00:17:37 · 684 阅读 · 0 评论 -
WHU 1572 Cyy and Fzz(AC自动机+dp)
题意:给出n个模板串,随机一个串,求出现模板串个数的期望(相同算一个)。做法:比赛时误以为是求模板串出现了几次,用dp[i][j]代表在第i个节点还要走l步的期望,然后记忆化搜索。。不停的wa。。后来问了别人才知道是看错题目了。做法应该是先求概率,再求期望,用dp[i][j][k]表示走了i步,停在j节点,得到串集合为k的概率。最后答案就是sum(dp[i][j][k]*(k里串的个数原创 2015-04-20 23:47:10 · 685 阅读 · 0 评论