码迷,mamicode.com
首页 >  
搜索关键字:ac自动机    ( 1438个结果
BZOJ 2434 NOI2011 阿狸的打字机 fail树+树状数组
题目大意:初始字串为空,首先给定一系列操作序列,有三种操作: 1.在结尾加一个字符 2.在结尾删除一个字符 3.打印当前字串 然后多次询问第x个打印的字串在第y个打印的字串中出现了几次 卡了很久……到底还是对AC自动机了解不是很深啊QAQ fail树不是很难想 至少在用AC自动机切掉3172之后不是很难想…… 首先构建AC自动机 注意由于这个字串的特殊构造 我们不必每打印一个字符串再...
分类:编程语言   时间:2014-11-26 19:08:19    阅读次数:290
[AC自动机]HDOJ3695 Computer Virus on Planet Pandora
题意:给t、n,t个案例,n个字符串 下面给n+1个字符串,n个互不相同的小串,最后一个是模式串 模式串会出现[qx]的形式,q为数字,x为一个字母问n个小串在模式串中出现的个数,正着出现、反着出现都算。蛮裸的ac自动机,本来想着在query里面把找到过的end清零,把模式串展开正着反着找两遍,.....
分类:Web程序   时间:2014-11-25 00:03:45    阅读次数:267
【BZOJ】1030: [JSOI2007]文本生成器(递推+ac自动机)
http://www.lydsy.com/JudgeOnline/problem.php?id=1030其实做了1009也不会感到很难了,无非将kmp变成了ac自动机。设f[i,j]表示前i个串当前匹配到j的节点的方案数。。然后自己想。sb错1:ac自动机的节点开小了(自己想错了。。以为最多节点就是...
分类:Web程序   时间:2014-11-24 15:03:33    阅读次数:214
BZOJ 1212 HNOI 2004 L语言 Trie树
题目大意:给出一些单词,和一些句子,当且仅当句子可以分割成的子串都可以被词典翻译,就说明这个子串是可以被翻译的。求最长的可以被翻译的前缀长度。 思路:利用Trie树来刷数组,能够刷到的最长的地方就是这个串最长可以翻译到的地方。 PS:在BZOJ上Trie居然比AC自动机快,我的渣代码都刷到第一篇了。。。 CODE: #include #include #includ...
分类:编程语言   时间:2014-11-20 18:49:12    阅读次数:286
POJ 1625 Censored!(AC自动机,DP)
题意: 给出一n种字符的字典,有k个禁用的单词,问能组成多少个不同的长度为m的合法字符串。 分析: 构建出AC自动机后在里面走m步有不经过单词结点有多少种方案,用dp[i][j]表示走了i步到第j个结点的方案数,根据计数原理可得状态转移方程:dp[i][j]=sum(dp[i][last_j]),其中last_j表示能走到j结点的前趋们,j不为单词结点。要注意此题要用到高精度,而且要用unsigned char存储。...
分类:其他好文   时间:2014-11-20 17:09:52    阅读次数:228
HDU 2825 Wireless Password (AC自动机,DP)
题意: 给出m个模式串,要求构造一长度为n的文本串,至少包括k种模式串,求有多少种可能的模式串。 分析: m个模式串构建AC自动机,然后要在这AC自动机中走n步,至少经过k个单词结点。因为m<=10,显然可以用状压表示已经有哪几个单词结点。用dp[i][j][k]表示走了i步到AC自动机中的第j个结点,单词状态为k,由计数原理可推出状态转移方程:dp[i][j][k]=sum(dp[i-1][last_j][last_k]),last_j表示可以抵达第j个结点的上一个结点,last_k表示上一步的状态;因为...
分类:其他好文   时间:2014-11-20 12:01:10    阅读次数:242
BZOJ 1212 HNOI2004 L语言 AC自动机(Trie树)+动态规划
题目大意:给定一个单词表和m个字符串 问每个字符串的最长的前缀,满足这个前缀可以拆分成一些字符串 使这些字符串都在单词表中出现过 再也不敢看错数据范围了……一道明明用Trie树能解决的问题居然被我写了AC自动机…… 将单词表中的单词全都插入AC自动机 每个单词所在的节点记录这个单词的长度 然后对于每个字符串 用f[i]表示长度为i的前缀是否能拆分成单词表中的单词 跑AC自动机 对于每个匹配...
分类:编程语言   时间:2014-11-19 01:30:12    阅读次数:182
POJ 3691 & HDU 2457 DNA repair (AC自动机,DP)
题意: 给出N个模式串和一个文本串,问最少修改文本串中多少个字母使得文本串中不包含模式串。 分析: N个模式串构建AC自动机,然后文本串在AC自动机中走,其中单词结点不可达。 用dp[i][j]表示文本串第i个字母转移到AC自动机第j个结点最少修改字母的个数,状态转移方程为dp[i][j]=min(dp[i][j],dp[i-1][last]+add),last表示j的前趋,add为当前点是否修改。由于第i个只和第i-1个有关,所以可以使用滚动数组来优化空间。...
分类:其他好文   时间:2014-11-18 13:33:10    阅读次数:203
[BZOJ3530][Sdoi2014]数数
阿拉~好像最近总是做到 AC 自动机的题目呢喵~题目的算法似乎马上就能猜到的样子…… AC 自动机 + 数位 dp先暴力转移出 f[i][j] :表示从 AC 自动机上第 j 号节点走 i 步且不碰到匹配串的方案数然后直接用数位 dp 一位一位的试就可以了,大家都会吧~但是…… 有前导 0 的情况真...
分类:其他好文   时间:2014-11-17 22:33:26    阅读次数:290
KMP模板
关于字符串的AC自动机,KMP,Trie树,后缀数组。 KMP是基础。当一个字符串与模式串匹配的时,若失配,利用前面匹配的信息,利用三部分连等关系。可以滑动的“恰如其分”。 Next数组的求法: 若此时求的是next[i]的数值,j位置之前的与从i开始后j-1个字符都是匹配的,若s[i]==s[j] 那么next[++i]=++j; 若不相等可以j=next[j]滑动回去。 OK,那么什么...
分类:其他好文   时间:2014-11-17 21:24:09    阅读次数:164
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!