AC自动机
Nightmare丶
登高必自卑,行远必自迩
展开
-
BZOJ 1559: [JSOI2009]密码(AC自动机+状压DP)
题目描述众所周知,密码在信息领域起到了不可估量的作用。对于普通的登陆口令以,唯一的破解方法就是暴力破解——逐个尝试所有可能的字母组合,但这是一项很耗时又容易被发现的工作。所以,为了获取对方的登陆口令,在暴力破解密码之前,必须先做大量的准备工作。经过情报的搜集,现在得到了若干有用信息,形如: “我观察到,密码中含有字符串*。”例如,对于一个10位的密码以及观察到的字符串hello...原创 2020-01-08 00:52:38 · 209 阅读 · 0 评论 -
BZOJ 3881 [COCI2015]Divljak(AC自动机+LCA+BIT)
题目描述:Alice有nnn个字符串S1,S2,...,SnS_1,S_2,...,S_nS1,S2,...,Sn,Bob有一个字符串集合TTT,一开始集合是空的。接下来会发生qqq次操作,操作有两种形式:1. 1.P Bob往自己的集合里添加了一个字符串P2. 2 x Alice询问Bob,集合T中有多少个字符串包含串sx,(我们称串A包含串B,当且仅当B是A的子串)题解:...原创 2020-01-06 23:54:54 · 219 阅读 · 0 评论 -
HDU 4787 GRE Words Revenge(AC自动机)
题目链接题意:T组数据,每次给你n个字符串,分为两种类型:+w表示学习一个单词w , ?p表示查询字符串p在学习过的单词中出现过的次数。每次的?询问是加密的,需要你移动上一次询问的答案次来作为当前询问的字符串题解:很明显的AC自动机,如果我们每次执行一个询问就重建一次fail,时间复杂度肯定爆炸了,好像说也有人这样水过了?我们可以考虑合并,建立两个AC自动机,一个大的,一个小的存临时的...原创 2019-12-08 23:13:10 · 121 阅读 · 0 评论 -
HDU 2457 DNA repair(AC自动机+DP)
Problem DescriptionBiologists finally invent techniques of repairing DNA that contains segments causing kinds of inherited diseases. For the sake of simplicity, a DNA is represented as a string conta...原创 2019-12-05 19:48:29 · 150 阅读 · 0 评论 -
2017青岛网络赛 C - The Dominator of Strings(AC自动机)
Problem DescriptionHere you have a set of strings. A dominator is a string of the set dominating all strings else. The string S is dominated by T if S is a substring of T.InputThe input contains se...原创 2019-12-05 00:39:46 · 135 阅读 · 0 评论 -
2018北京icpc区域赛 H - Approximate Matching(AC自动机+DP)
String matching, a common problem in DNA sequence analysis and text editing, is to find the occurrences of one certain string (called pattern) in a larger string (called text). In some cases, the patte...原创 2019-12-04 23:29:22 · 267 阅读 · 0 评论 -
HDU - 2825 Wireless Password(AC自动机+状压DP)
题意:给你m个字符串S,询问有多少种字符串满足长度为n且包含k个以上字符串S。题解:做了那么多了,这类状压DP太水了…设dp[i][j][S]表示当前处理到第i个字符,在AC自动机上的节点标号为j,已经包含的字符串集合为S然后循环转移就好了,确实太水了,也说不了更多的东西了…看代码吧…AC代码:#include<bits/stdc++.h>using namespac...原创 2019-11-26 00:39:12 · 157 阅读 · 2 评论 -
BCD Code ZOJ - 3494(AC自动机+数位DP)
题意:Binary-coded decimal (BCD) is an encoding for decimal numbers in which each digit is represented by its own binary sequence. To encode a decimal number using the common BCD encoding, each decimal ...原创 2019-11-25 21:56:22 · 146 阅读 · 0 评论 -
HDU 4758 Walk Through Squares (2013南京网络赛1011题,AC自动机+DP)
题意:有一个n×m的矩阵,有两种走法,每种走法都是一个包含D和R的序列,D表示向下走,R表示向右走,问从(1,1)走到(n,m)有多少方案是包含这两种走法的题解:我们用这两种走法建立AC自动机,然后在AC自动机上DP解决方案数问题,设dp[i][j][k][S]dp[i][j][k][S]dp[i][j][k][S]表示当前走了i个D,j个R,对应在AC自动机上的k点,此时已经包含的走法集合...原创 2019-11-25 20:06:03 · 109 阅读 · 0 评论 -
HDU - 4511 小明系列故事——女友的考验(AC自动机+DP)
题意:终于放寒假了,小明要和女朋友一起去看电影。这天,女朋友想给小明一个考验,在小明正准备出发的时候,女朋友告诉他,她在电影院等他,小明过来的路线必须满足给定的规则: 1、假设小明在的位置是1号点,女朋友在的位置是n号点,则他们之间有n-2个点可以走,小明每次走的时候只能走到比当前所在点编号大的位置; 2、小明来的时候不能按一定的顺序经过某些地方。比如,如果女朋友告诉小明不能经过1 -&...原创 2019-11-25 17:18:55 · 297 阅读 · 0 评论 -
BZOJ 2938: [Poi2000]病毒(AC自动机)
题意:给你n个病毒代码,问你是否存在一个无限长的安全代码, TAK——假如存在这样的代码;NIE——如果不存在。题解:用病毒串建好AC自动机,然后在上面跑dfs判断是否有环即可。不加vis标记也对,但是会TLEAC代码:#include<bits/stdc++.h>using namespace std;const int MAXN = 30050;int nxt...原创 2019-11-23 01:20:07 · 134 阅读 · 0 评论 -
HDU4057 Rescue the Rabbit(AC自动机+状压dp)
题意:给你n个基因串和每个基因串拥有的价值,可以为正也可以为负,询问构造长度为m的基因价值最大为多少?每种基因如有多个,当作一个。题解:这种题很容易想到在AC自动机上DP,我们不妨设dp[i][j][S]dp[i][j][S]dp[i][j][S]表示当前处理到第iii个字符,并且在AC自动机上的jjj点,已经构成的基因串集合为SSS,然后从父亲向下递推看能否到达下一个状态就好了,不过dp数...原创 2019-11-21 20:54:08 · 119 阅读 · 0 评论 -
HDU3247 Resource Archiver(AC自动机+状压BFS)
题意:给你n个资源串S,和m个病毒串,问一个最短的字符串包含所有的资源串,但不包含病毒串,输出其长度。题解:很明显,n的范围(2≤n≤10)(2≤n≤10)(2≤n≤10),很容易想到状压,因此我们考虑将资源串和病毒串都放入AC自动机中,将病毒串的尾节点置为-1不走这个点即可。然后就是BFS爆搜就行了。AC代码(状压BFS):#include<bits/stdc++.h>...原创 2019-11-21 17:46:40 · 173 阅读 · 0 评论 -
Codeforces E. You Are Given Some Strings...
题意:给你一个字符串T,和n个字符串S,让你求出下面给出的公式F,F表示将SiS_iSi和SjS_jSj拼接后在TTT中的出现次数∑i=1n∑j=1nF(t,si+sj)\sum_{i=1}^n\sum_{j=1}^nF(t,s_i+s_j)i=1∑nj=1∑nF(t,si+sj)题解:用n个字符串S正反两个AC自动机,第一个AC自动机处理以T的第i个字符结尾的串的种类数,第二...原创 2019-11-18 17:22:03 · 268 阅读 · 0 评论 -
BZOJ 2754: [SCOI2012]喵星球上的点名
题意:有NNN个喵星人,每个喵星人都有姓和名,老师会选择MMM个串点名,如果这个串是一个喵星人的姓或名,那么这个喵星人就必须答到,问对于每个老师点名的串,有多少个喵星人应该答到。在最后一行输出每个喵星人被点到多少次。【数据范围】对于303030%的数据,保证:1<=N,M<=10001<=N,M<=10001<=N,M<=1000,喵星人的名字总长不超过...原创 2019-11-14 18:40:23 · 184 阅读 · 0 评论 -
Codeforces 1207 G. Indie Album
题意:有nnn次操作,对于第iii个操作由下列两种方式的一种给出111 ccc ,该字符串只含一个字符ccc222 xxx ccc,该字符串为第x(1≤x≤i)x(1≤x≤i)x(1≤x≤i)个字符串末尾添加一个字符ccc得到然后有Q次询问,每次询问给出一个字符串sss和位置编号xxx,问在第xxx个字符串中,字符串sss出现了几次题解:ACACAC自动机,树状数组/线段树,d...原创 2019-11-10 15:23:09 · 189 阅读 · 0 评论 -
BZOJ 3942: [Usaco2015 Feb]Censoring
题意:从文本串上删除一些字符串 每次优先删除从左边开始第一个满足的,删除后剩下的串连在一起重复删除步骤直到不能删。题解:ACACAC自动机 + 栈用要删除的串构建ACACAC自动机,让文本串在ACACAC自动机上匹配,再用一个栈记录经过的字符,如果匹配成功了,说明文本串包含了要删除的串,我们将toptoptop指针前移lenlenlen位即可。ACACAC代码:#include<...原创 2019-11-07 23:37:09 · 100 阅读 · 0 评论 -
病毒侵袭 HDU - 2896(AC自动机)
题意:给出若干个病毒串,不超过500个,每个病毒串长度在20~200之间。现在有若干个网站的原代码,要检测其中是否包含病毒,网站的个数不超过1000个,每个网站的原代码长度在7000-10000之间。已经如果包含病毒,最多包含3个病毒。输出每个含病毒网站包含的病毒的编号等信息,最后输出含病毒网站的个数。AC自动机水题AC代码:#include<bits/stdc++.h>u...原创 2019-10-29 23:08:31 · 154 阅读 · 0 评论 -
Best Sequence POJ - 1699(AC自动机+状压dp)
题意:给你n个字符串序列,让你构造一个字符串,它包含所有的n个字符串,并且使字符串最短/*15TCGGGCAGCCGCGATCATCG该字符串就可以为CCGCAGATCGC,因为它是符合条件的最短字符串*/刚开始看数据很小,直接暴力dfs交了一发,果断T掉了orz,然后眉头一皱发现事情并不简单…想了好一阵才想到这个数据范围不是可以状压么…sb了…不过好像dfs+剪枝也能过...原创 2019-10-28 16:49:41 · 163 阅读 · 0 评论 -
P2414 [NOI2011]阿狸的打字机
题意:打字机上只有28个按键,分别印有26个小写英文字母和’B’、'P’两个字母。经阿狸研究发现,这个打字机是这样工作的:·输入小写字母,打字机的一个凹槽中会加入这个字母(这个字母加在凹槽的最后)。·按一下印有’B’的按键,打字机凹槽中最后一个字母会消失。·按一下印有’P’的按键,打字机会在纸上打印出凹槽中现有的所有字母并换行,但凹槽中的字母不会消失。例如,阿狸输入aPaPBbP,纸上被...原创 2019-10-26 18:26:12 · 202 阅读 · 0 评论 -
P3311 [SDOI2014]数数
题意:我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串。例如当S=(22,333,0233)时,233是幸运数,2333、20233、3223不是幸运数。 给定N和S,计算不大于N的幸运数个数。下表中l表示N的长度,L表示S中所有串长度之和,M表示集合S的大小1 < =l < =1200 , 1 < =M < =100 ,1...原创 2019-10-26 16:52:57 · 272 阅读 · 0 评论 -
P3041 [USACO12JAN]视频游戏的连击Video Game Combos
题意:贝西在玩一款游戏,该游戏只有三个技能键 “A”“B”“C”可用,但这些键可用形成N种(1 <= N<= 20)特定的组合技。第i个组合技用一个长度为1到15的字符串S_i表示。当贝西输入的一个字符序列和一个组合技匹配的时候,他将获得1分。特殊的,他输入的一个字符序列有可能同时和若干个组合技匹配,比如N=3时,3种组合技分别为"ABA", “CB”, 和"ABACB",若贝西输入...原创 2019-10-26 16:03:02 · 115 阅读 · 0 评论 -
P3121 [USACO15FEB]审查(黄金)Censoring (Gold)
题意:第一行给出一个文本串S,接下来给出一个n表示n个单词,随后n行输入n个单词,并且不存在一个单词是另一个单词的子串的情况,每次从S中找到最早出现的列表中的单词,然后从S中删除这个单词,重复这个操作直到S中没有列表里的单词为止,注意删除一个单词后可能导致S中出现另一个单词。题解:栈+AC自动机用n个单词构建AC自动机,寻找单词时可以用一个id数组记录在第i个点时搜索到了哪个节点,并且用栈来记...原创 2019-10-26 15:40:56 · 145 阅读 · 0 评论 -
[TJOI2013] 单词
题目描述某人读论文,一篇论文是由许多单词组成。但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次。输入描述:第一个一个整数N,表示有多少个单词,接下来N行每行一个单词。每个单词由小写字母组成,N ≤ 200,单词长度不超过10^6输出描述:输出N个整数,第i行的数字表示第i个单词在文章中出现了多少次。``只需要建出fail树,求子树就好了#include&...原创 2019-10-26 14:04:14 · 386 阅读 · 0 评论 -
P4052 [JSOI2007]文本生成器
题意:给你n,m表示n个可以识别的单词,m为文本固定长度,接下来n行为可以识别的单词,要求文本中至少有一个可以识别的单词。题解:要求文本中至少有一个可以识别的单词,我们可以求其反面,也就是一个可识别单词都没有的单词总数。我们考虑用dp求解,dp[i][j]表示当前在j点且串长为i时不经过单词结尾的路径条数,然后从父亲到儿子转移即可。最后用所有方案数减去即为答案#include<bits/...原创 2019-10-26 14:47:00 · 152 阅读 · 0 评论