
数据结构_AC自动机
just_sort
Acdream.
展开
-
HDU 2222 Keywords Search (AC 自动机)
【题意】多模式串匹配母串,求模式串出现的次数。【解题方法】AC 自动机裸题。【AC自动机学习】 可以参考这篇blog,写得很好。点击打开链接【AC 代码】////Created By just_sort 2016/8/20//All Rights Reserved//#include #include #include #include #include usin原创 2016-08-20 10:05:19 · 373 阅读 · 0 评论 -
BZOJ 1444: [Jsoi2009]有趣的游戏 AC自动机加矩阵快速幂
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1444非权限题,就没粘贴题面了。解法:AC自动机+矩阵乘法首先把模式串建成AC自动机,构建出转移矩阵。构造方法:a[i][j]表示从第i个结点转移到第j个结点的概率,则如果j被标记过,f[i][j]=1,否则f[i][j]=p[ch[j]]。///BZOJ 1444#include <bits原创 2017-05-01 14:47:52 · 516 阅读 · 0 评论 -
BZOJ 1030: [JSOI2007]文本生成器 DP,AC自动机
Description JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群, 他们现在使用的是GW文本生成器v6版。该软件可以随机生成一些文章―――总是生成一篇长度固定且完全随机的文 章—— 也就是说,生成的文章中每个字节都是完全随机的。如果一篇文章中至少包含使用者们了解的一个单词, 那么我们说这篇文章是可读的(我们称文章a包含单词b,当且仅原创 2017-01-19 15:38:14 · 667 阅读 · 0 评论 -
UVA 1399 Puzzle 求一个最长的串使得该串不包含任何禁止串为子串 AC自动机 + DP +dfs判环
【解题参考blog】http://blog.youkuaiyun.com/acm_10000h/article/details/48878645【题意】给定K和N,表示有K种不同的字符,N个禁止串,求一个最长的串使得该串不包含任何禁止串为子串。如果存在循环或者不能构成的话,输出No!【解题方法】实际上就是Trie图上的最长路,先对模式串建立AC自动机,之后在AC自动机上跑最长路。无限长的情况就是tri原创 2016-10-13 20:31:06 · 724 阅读 · 0 评论 -
UVALive 4126 Password Suspects(AC自动机 套 DP)
【题意】现在有个长度已知的字符串,你知道一些它的子串,问你这个字符串的可能的种数(这些子串可以重叠),如果种数 【解题方法】先构造AC自动机,设 d[ u ][ len ][ st ]表示最后一个是 u ,已选长度为 len ,状态为 st 的剩余种数,则有方程:dp[ u ][ len ][ st ] = SIGMA(dp[ ch[u][i] ][ len+1 ][ st|val[ch[u]原创 2016-10-12 21:56:22 · 1252 阅读 · 0 评论 -
2016 ACM/ICPC Asia Regional Qingdao Online HDU 5880 Family View
Family ViewTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1253 Accepted Submission(s): 248Problem DescriptionSteam is a digital原创 2016-09-23 16:36:45 · 861 阅读 · 0 评论 -
HDU 3065 (AC自动机水题)
病毒侵袭持续中Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11454 Accepted Submission(s): 4014Problem Description小t非常感谢大家帮忙解决了他的上一个问题。原创 2016-08-24 21:10:27 · 409 阅读 · 0 评论 -
HDU 3695 Computer Virus on Planet Pandora
【题意】给n个病毒字符串和一个程序字符串,若程序字符串包含某个病毒字符串或者它的反串,则包含这个病毒,问所给程序字符串包含多少个病毒?【解题方法】用病毒串和反串建立AC自动机,然后求包含多少病毒,但同一个病毒可能会被计算2次(如果病毒和它的反串都出现在程序中),对于每个病毒,它在自动机中都有2个结点代表自身结尾和反串结尾,我们对每个病毒都记录这2个结点,在统计的过程中可以把走过的结点打原创 2016-08-24 15:38:59 · 705 阅读 · 0 评论 -
UVA 11019 Matrix Matcher
【题意】给出一个n*m的字母矩阵T和一个x*y的字母矩阵S。求S在T中出现了多少次?【解题方法】具体见白书218页,前面写的AC 自动机,都是没有加last优化的,但是我写这个题的时候,发现不加last巨难写,好吧我太菜了。所以我选择了这种last优化(好像并没有优化?)的版本,作为AC自动机的第二种板子,方便以后遇到较难的题的处理,这样要方便一些。将S的每行看做一个串插入ac原创 2016-08-20 16:46:44 · 397 阅读 · 0 评论 -
UVA 11468 Substring AC 自动机套DP
【题意】【解题方法】详细可见白书P 218构造完改造后的AC自动机后,每随机生成一个字母,相当于在AC自动机中随机走一步。所以有单词的节点标记为"禁止"。则本题就是求从节点0开始走L步,不进入任何禁止节点的概率。 令d[i][j]表示当前在i节点,还有长为j的路要走且不经过单词节点的概率。初值为d[i][0]=1,其中i为非单词节点,否则d[i][0]=0。原创 2016-08-20 14:57:11 · 488 阅读 · 0 评论 -
UVA 4670 Dominating Patterns
【题意】【分析】题目给出一个文本串多个模板串,要求出现最多的模板串。这恰好可以用AC自动机解决,只不过需要将print修改为cnt[val]++ 统计标号为val的模板串出现的次数。 原理:在文本串不同位置出现的模板都可以通过自动机匹配找到。 注意:为什么模板要开始从1标号? : 因为调用了insert(word[i],i)语句,如果给模板标号0的话相当于舍弃了这个模板原创 2016-08-20 13:26:58 · 412 阅读 · 0 评论 -
UVALive - 3490 Generator AC自动机+高斯消元
题目链接:https://vjudge.net/problem/UVALive-3490题意:随机字母组成一个串,有一个目标串,当这个由随机字母组成的串出现目标串就停止,求这个随机字母组成串的期望长度。解法:容易看出,dp[i] = 所有他下一步可能的节点dp[j]之和/m+1。可以想一下从头走到i的递推式,是dp[i] = 所有走到i这个节点的dp[j]+1。然后就可以列出n个方程,dp[最后一个原创 2017-05-02 18:51:09 · 507 阅读 · 0 评论