ACAM
Icefox_zhx
这个作者很懒,什么都没留下…
展开
-
hdu2222 Keywords Search(ACAM)
模板题。原创 2018-03-22 18:17:51 · 203 阅读 · 0 评论 -
hdu4117 GRE Words(ACAM+fail树+线段树)
首先我们有如果i< j,且sisis_i为sjsjs_j的子串,那么有转移f[j]=f[i]+w[j]f[j]=f[i]+w[j]f[j]=f[i]+w[j] 其中f[i]f[i]f[i]表示以第i个串结尾的最大答案。对f[i]f[i]f[i]取max即为答案。 我们考虑如何处理子串,把所有串先建出ACAM,然后拿每个串当文本串去跑,看有多少标号比我小且可以匹配上的。 这样是O(len...原创 2018-05-20 21:24:59 · 276 阅读 · 0 评论 -
bzoj2553 [BeiJing2011]禁忌(ACAM+概率dp+矩阵快速幂)
先把所有禁忌串建成ACAM,搞出Trie图。然后我们首先对于一个字符串,他的伤害是多少,就可以转化成选最多的线段两两不相交。这个问题可以贪心地按右端点排序后能取就取。体现在ACAM上就是走到一个结束节点就返回根,++ans。f[i][j]表示长度为i的串匹配到ACAM的节点j的伤害期望值。然后长度超级大!我们需要矩阵倍增!但是我们还要记录ans,怎么办呢!再多开一个点累计答案!如果一个点再走到他的儿原创 2018-04-19 17:11:09 · 205 阅读 · 0 评论 -
bzoj3940 [Usaco2015 Feb]Censoring(ACAM+栈)
题目大意:给定文本串S,n个模式串。要求从S中依次删去出现的模式串。建出ACAM,直接用栈来模拟即可。原创 2018-03-23 22:14:32 · 349 阅读 · 0 评论 -
bzoj1444 [Jsoi2009]有趣的游戏(ACAM+矩阵+概率dp)
给定n个长度为l的模式串,现在要用前m个大写字母生成一个随机串,每个字符有自己的出现几率,第一次出现的字符串获胜,求最终每个字符串的获胜几率建出ACAM,搞出Trie图,弄出转移矩阵: 如果某个节点是模式串结尾那么这个节点只向自己连一条概率为1的出边(因为只要一走到结尾节点游戏就停止了)否则的话向每个转移到的节点,加上转移的概率。然后把转移矩阵自乘50遍即可。吐槽:这题假的假的【再见】,我写矩阵倍原创 2018-03-23 21:09:00 · 512 阅读 · 1 评论 -
bzoj3881 [Coci2015]Divljak(fail树+树链的并+BIT)
一开始给定模式串集合S,不断向文本串集合T添加字符串,多次询问T中有多少个串包含模式串Si。我们首先把S集合的串用ACAM建出fail树,然后每次加入新串时我们就去ACAM上跑一遍,把到达的节点记下来。因为对每个串只贡献一次,所以这一次的贡献就是这若干个节点到根的若干条链的并。怎么求链的并呢?将所有节点按照DFS序排序 每个点到根的路径上的所有节点权值+1 相邻两个点的LCA到根的路径上的所有节原创 2018-03-23 16:13:31 · 436 阅读 · 0 评论 -
bzoj3172 [Tjoi2013]单词(AC自动机+fail树)
求每个串在文章中出现的次数(文章为这些串加分隔符串联而成) 考虑ACAM的朴素做法,就是建出ACAM以后每个串在ACAM跑一遍,跳fail指针统计答案。但是这样最后复杂度是O(n2)O(n^2)的。会TLE 怎么办呢?我们考虑建出fail树,那么我们每次在节点p跳fail指针就相当于在fail树上从p一直跳到根,给路径上所有节点的cnt+1。于是我们可以每次只给cnt[p]+1,然后节点p的答案原创 2018-03-23 12:22:18 · 284 阅读 · 0 评论 -
bzoj2434 [Noi2011]阿狸的打字机(AC自动机+fail树+树状数组)
多次询问一个串x在另一个串y中的出现次数。我们先建出ACAM,考虑如何做这件事,就是询问y有多少个节点沿着fail指针能找到x。但是这样太慢,我们不妨反向思考,就是求x沿着反向的fail指针能找到几个y的节点。我们建出fail树(fail指针没有环 每个节点只有一个出度 那么反向之后显然是一棵树 x沿着反向的fail指针所能到达的节点就是x所在的子树)。所以现在就是询问x的子树中有多少个y的节点。我原创 2018-03-23 11:43:27 · 195 阅读 · 0 评论 -
bzoj2938 [POI2000]病毒(ACAM+拓扑序判环)
问是否存在一个无限长的串不包含任意模式串。 那么我们建出ACAM,删去所有不能走的点(即模式串结尾),看是否存在一个环,如果存在则可以。可以用拓扑序来判环。原创 2018-03-23 10:34:49 · 243 阅读 · 0 评论 -
poj2778 DNA Sequence (ACAM+dp+矩阵倍增)
求不包含模式串的文本串个数,n极大。我们还是类似的建出ACAM,然后在上面跑dp,只不过这次我们要矩阵倍增来加速。复杂度O((m∗len)3logn)O((m*len)^3logn)原创 2018-03-22 21:56:59 · 176 阅读 · 0 评论 -
bzoj1030 [JSOI2007] 文本生成器(ACAM+dp)
求长度为m的,至少包含一个模式串的文本串个数。 我们考虑用所有的个数26m26^m减去一个模式串也不包含的个数。 后者我们可以建出ACAM,然后在ACAM跑dp即可。原创 2018-03-22 21:15:05 · 231 阅读 · 0 评论 -
bzoj1195 [HNOI2006]最短母串(ACAM+状压+bfs)
建出ACAM,然后装压到每个点的串匹配状态。 最短的字典序最小的,于是我们贪心地从小到大bfs。 复杂度O(nm2n)O(nm2n)O(nm2^n) 这题卡内存真是酸爽【再见】#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 6...原创 2018-05-28 14:46:27 · 267 阅读 · 0 评论