
AC自动机
文章平均质量分 80
kk303
这个作者很懒,什么都没留下…
展开
-
POJ 1204 AC自动机的初步认识+模板题
前一向在搞字典树就是为了搞AC自动机...AC自动机的用处..或者说最一般的用处就是给一个字典..找一篇文章中哪些单词出现过的一种较优的方法...而AC自动机的结构或者说方法简单的说就是字典树+KMP...首先将字典中的所有单词构造一颗字典树(我前面的文章有详细的介绍字典树..这里就不说了)...然后再类似KMP的方法来给每个点构造Fail指针..而在用AC自动机在文章中查找中的过程很类似KMP在原创 2011-10-27 23:53:44 · 4150 阅读 · 0 评论 -
HDOJ-3341 好BT的AC自动机...T_T
好不容易空间卡时间过了...T_T..... 题意是给出N( 用所有模式串构造AC自动机... 然后就DP吧...状态为dp[k][p]...代表AC自动机中点k..所构成'A'..'C'..'G'..'T'.个个数情况为p时所能得到的最多模式串...而这个状态表示方法最大的问题就是如和来表示p...最朴素的就是用[40][40][40][4原创 2012-04-13 15:17:45 · 1148 阅读 · 0 评论 -
HDOJ-2896 AC自动机基本操作
对sha崽AC自动机专项练习的扫尾...本题确实是比较卡空间啊...我是试次空间了几次才过的...囧.. 这里的ASCII码是0~127的...用病毒传构造AC自动机..进一步构造Trie图...再通过Trie图遍历所有网站编号..记录统计即可..Program:#include#include#include#include#include#define原创 2012-04-19 22:14:51 · 1220 阅读 · 0 评论 -
HDOJ-3065 AC自动机..题意大丈夫?
坑爹的题意...明明说了第一行怎么怎么..接下来N行怎么怎么...搞半天是多组Case..这不忽悠人么!! 先用病毒传构造AC自动机..再遍历网站源码...当走到一点,从这点不断fail直到头接点..路径上所有点的经过次数++..Program:#include#include#include#include#include#define oo 20000原创 2012-04-19 22:52:38 · 1014 阅读 · 0 评论 -
HDOJ-3427 & ZOJ-3190 Resource Archiver AC自动机压缩状态DP..
先用resources和virus构造出AC自动机.. 本题最暴力的状态是很好想到的...dp[a][b][c]...代表a长度时某串后缀能到AC自动机点b..能得到c些resources..其中c是一个用十进制表示的二进制数..代表题目里最多10个resources的存在情况...可见此种dp..状态最多可为10000*60000*1024...爆空间爆时间..各种爆..爆得体无原创 2012-04-19 23:16:04 · 1607 阅读 · 0 评论 -
ZeroJudge-b179 空罐 Cans 可爱的AC自动机DP..
http://zerojudge.tw/ShowProblem?problemid=b179 咩哈哈哈哈..这个只有29个人出的题俺整出来了...网上似乎还木有解题报告的说...我就来做第一个吧... 这种关于包含病毒就要不得的问题很明显的要用到AC自动机...不管三七二十一..先根据所有病毒串做好AC自动机以及Trie图... 本题的状态可以用dp[t][原创 2012-04-19 12:53:06 · 1727 阅读 · 0 评论 -
Fukuoka 2011 F - City Merger <路径压缩,位运算,AC自动机>
本题求用最短的长度字符串包含所给子串...由于存在多串匹配的问题...容易联想到AC自动机... 以前做过的一道类似的题 http://blog.youkuaiyun.com/kk303/article/details/7438478 最多14个city..用14位的二进制数表示已经在串中否...对多串构造Trie树..进一步构造好AC自动机...可以用dp [ k ] [ i ]原创 2012-09-04 16:10:33 · 1661 阅读 · 2 评论 -
HDOJ 4057 - Rescue the Rabbit 简单的AC自动机+状态压缩DP
题意: 众所周知..DNA序列由"A","G","T","C"组成.... 现在N个DNA序列(每个长度没说..假设都小于1000吧...1 若一个DNA串包含其中的某些串..那么得分就是包括的串分数之和(一个串不管出现了多少次..只算一次).原创 2013-11-22 17:16:06 · 1259 阅读 · 0 评论 -
ZOJ-3288 AC自动机
用模式串构造Trie树..用Trie树构造AC自动机...用AC自动机构造Trie图...为了在一个Trie图中能同时处理overlap 和 not overlap的情况..每个节点就要有两个计数器.. overlap的计数器point[h].w[0]很好处理...就是普通的Trie图遍历目标串..到达一个点h..其point[h].w[0]++并且其所有Fail到0的点的w原创 2012-04-11 21:05:25 · 1072 阅读 · 0 评论 -
HDOJ-2296 AC自动机+DP..一定要细心..
构造Trie树..通过Trie树构造AC自动机..再通过AC自动机构造Trie图... 本题DP的状态为dp[k][p].w 代表当字符串长度为k时..以头节点到p点为后缀的串所能得到的最大权值...同时用dp[k][p].s来存这个k长度的串..状态转移方向为Trie图中有向边的方向..显然k长度的状态只于k-1的状态有关..所以可以用滚动数组来存储dp状态..原创 2012-04-09 18:41:21 · 1025 阅读 · 0 评论 -
POJ3691 - AC自动机的第一道DP
第一道AC自动机...从上周日就开始写了..搞得我都要抓狂了...今天也是看了在网上搜了些解题报告才搞定...发现和我自己整得差别较大...瞎忙活了3天... .题意是说给了N个带病毒的DNA串( DNA串只有AGCT几种单元组成)...再给一长串DNA..问这长串DNA最少改动几个(就是改..不是删除或者添加..)能保证没有包含病毒字串..输出这个最小改动的次数..若怎么修改都带病毒子串原创 2011-11-02 19:38:44 · 2698 阅读 · 0 评论 -
POJ2778 - AC自动机+非递归的矩阵乘法
回想还是半个月前...跟着Matrix67的那文章做矩阵乘法....做到这题就卡住了...决心突破..这两周从Trie入门开始..到今天终于把这题给AC了...虽然这半个月做题量相比以前大大减少....但真正能初步掌握一种算法还是值得的... 首先这道题我是参考了几个解题报告的: http://www.matrix67.com/blog/archives/276/原创 2011-11-04 15:47:49 · 3196 阅读 · 0 评论 -
USACO Section 3.1 Contact - AC自动机..
赤果果的AC自动机~并且比较阉割~比完整的AC自动机好写多了.. 首先构造一个完全二叉树..根据题目要求构造13层..根节点为1,根的左孩子为2,右孩子为3..依次类推..那么一个节点P的父亲为P/2...左孩子为P*2...右孩子为P*2+1..所以整棵树用一维数组来存就okl了...这棵树转化为字典数..可以看成..1是超级节点..2是'0'...3是'1'..4是'00'..5是'01'原创 2011-12-05 20:31:27 · 1738 阅读 · 0 评论 -
ZOJ-3430 AC自动机+恶心...
这道题要留意的是转换后的字符,是0~255的..包括一些转义字符..譬如'\0'的..so..用字符串存会很囧..所以用int数组存... 本题分为两步...第一步是翻译字符串...第二步是AC自动机... 我对位运算很不熟练...所以在翻译字符串用的是最原始最原始的方法...先将字符串读入..转化为二进制串..再翻译成所需的...还好...虽然效率不高..但也没耽误太原创 2012-03-13 12:05:12 · 2143 阅读 · 0 评论 -
HDOJ-2243 AC自动机.等比矩阵求和
题目是要说小于L长度的由小写字母组成的字符串有多少个包含所给的串... 从正方向想..要求出包含的..并且还要踢去重复包含的..又要加上被多踢的..整个一容斥问题了...但这题明显是不可行的...那么换个角度..先求出总共小于L的单词数(26^1+26^2+26^3+...26^L)..然后再减去不包括所给字符串的单词...相当于把每个单词看成POJ2778中的病毒...原创 2012-03-30 16:59:28 · 1616 阅读 · 0 评论 -
POJ-1625 & ZOJ-1540 & Ural-1158 AC自动机+DP+大数..
AC自动机的DP...每个节点是状态..每条边是转移方向..其实这题和 POJ-2778 DNA Sequence 是一回事..只是这题是高精度..并且数据范围没那么大..所以使得直接DP的效率从时间和空间上都远远高于了用矩阵乘法...囧.. 其实准确的说这题所构造的图不是AC自动机而是Trie图...为了DP转移时更加方便..把节点没有的孩子赋值为其fail点的这个孩子...这样原创 2012-04-05 23:01:24 · 2553 阅读 · 0 评论 -
HDOJ-2825 AC自动机DP+位运算..
题目是要求最少出现k种模式串...开始我看成k个了..囧..k种的话可以用2^k-1的整数可以描述出模式串出现的任意情况...也就是将每个模式串出现否看成二进制的1,0...题目中模式串最多10个..所以模式串存在状态最多1023种... 先用AC自动机构造Trie图...这个已经很模板很模板了..值得注意的是在构造时给每个点我称为data的值..代表从0点出发到这个点的串的后缀子串能原创 2012-04-08 20:10:37 · 1291 阅读 · 0 评论 -
HDOJ 2222 - Keywords Search 更新AC自动机模板...用类来表示
题意: 有n( 题解: 裸AC自动机....空间限制略恶心..直接用指针会好一些....更新模板...Program:#include #include#include#include#define ll long long #define MAXNODE 242005u原创 2015-04-03 17:19:41 · 922 阅读 · 0 评论