![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
AC自动机
UniverseofHK
事情留在今天,时间送给明天
展开
-
洛谷 P-4045 密码(AC自动机+状态压缩+数位DP+乱搞)
洛谷 P-4045 密码记AC的第一道黑题!题意:已知一段密码包含了一些字符串,然后求满足条件的密码有多少个,数量小于42时还得全部输出思路:一开始WA了两个点,不知道WA的什么,索性把读入的字符串去重了,实际上不需要建好AC自动机,同时记录当前点是哪个字符串的结尾,方便状态压缩做一遍数位DP,如果所有状态(给的字符串)都能达到,则说明所构造出的密码有效需要注意的是,加入一个字符后...原创 2019-07-30 20:06:54 · 186 阅读 · 0 评论 -
洛谷 P3041 视频游戏的连击Video Game Combos(AC自动机+拓扑排序+数位DP)
洛谷 P3041 视频游戏的连击Video Game Combos难度一般,不过这个数位DP其实应该叫做记忆化搜索题意:玩游戏时可以通过按键组合打出combo技能;然后是已知N个combo的按键方式,然后求K次按键最多可以放出的combo技能(combo技能之间可以重叠)。思路:在AC自动机上如果一个点表示一个字符串以及它的后缀,则一个点可以对应多个combo技能(这是关键点)可以先用...原创 2019-07-30 18:21:52 · 183 阅读 · 0 评论 -
洛谷 P-2292 L语言(AC自动机)
洛谷 P-2292 L语言一道大水题,结果自己脑补了各种奇葩(错误)的判断,搞了一个多小时。。。思路:建好AC自动机,记录好每个点所代表的字符串的长度拿要匹配的串从前往后匹配,若某个点完全不能匹配,直接退出(可以不考虑这个)处理好什么叫“可以匹配”就好了,就是能将当前串分解为一个可识别的前缀和一个可识别的后缀即可因此对当前字符跑fail边(即跑后缀),若“可以匹配”,则更新最长可识别...原创 2019-07-30 16:54:15 · 148 阅读 · 0 评论 -
洛谷-P4052+P3311 (AC自动机+数位DP)
洛谷-P4052 文本生成器题目地址虽然这题应该称为记忆化搜索,但是就想当做数位DP(QAQ)一开始数组开小了,导致了WA,TLE,RE以及两个AC,深深的体会到了数组开小了什么错误都有,哈哈思路:虽然是要求可读文本的数量,但是毕竟要构造多字符串的匹配还是比较麻烦的,因此可以转化为求 总文本数-不可读文本数转化后总文本数可以直接快速幂搞定,不可读文本数可以在AC自动机上跑数位D...原创 2019-07-30 14:54:37 · 155 阅读 · 0 评论 -
AC自动机(Automaton)
洛谷-P3808 简单板子题//#pragma comment(linker, "/STACK:102400000,102400000")#include "bits/stdc++.h"#define pb push_back#define ls l,m,now<<1#define rs m+1,r,now<<1|1#define hhh printf("hhh...原创 2019-07-28 23:07:42 · 538 阅读 · 0 评论 -
最短母串问题(AC自动机+BFS+状态压缩)
最短母串问题题意:给定nnn个子串,求最短且字典序最小的母串(母串性质:这nnn个子串都包含在母串里)思路:考虑把子串去重(不去重能不能A我不知道,但去重肯定没问题)建好AC自动机从000节点开始用bfsbfsbfs遍历自动机,并且总是从’A’遍历到’Z’以保证答案的字典序最下每次取出头结点时检查其状态是否包含了所有的子串,状态检查:now.state==(1<&...原创 2019-08-27 16:23:47 · 403 阅读 · 0 评论 -
Censoring (Gold)(AC自动机多字符串匹配+栈)
Censoring (Gold)题意:给了一段文本串,再给了含NNN个字符串的字典。将文本从左到右,如果遇到了字典中的字符串,则删去这一段文本,继续按顺序匹配,输出最终文本剩下的内容。思路:用字典建立好AC自动机,处理出每个节点所能代表的字典中的最长字符串的长度(用topo排序处理)将文本串在AC自动机上跑,并将每次的节点放到栈里面;如果匹配成功了,则在栈中弹出此长度的个数,并且指针移动...原创 2019-08-28 11:52:05 · 195 阅读 · 0 评论