其实前面的模板也不是1A,我在题库里提前做过,也不必在意罚时,刚开始我在做别的专题

裸模板我就不说了,各个博客讲解的很明白

 1 void insert(string s){
 2     int p=0,len=s.size();
 3     for(int i=0;i<len;++i)
 4         if(c[p][s[i]-'a'])p=c[p][s[i]-'a'];
 5         else p=c[p][s[i]-'a']=++cnt;
 6     ++iii;bj[p].push_back(iii);pos[iii]=p;
 7 }
 8 void bfs(){
 9     int qt=0;
10     for(int i=0;i<=25;++i)if(c[0][i])q[++qt]=c[0][i];
11     for(int qh=1;qh<=qt;++qh)
12         for(int j=0;j<=25;++j)
13             if(c[q[qh]][j])fail[q[++qt]=c[q[qh]][j]]=c[fail[q[qh]]][j];
14             else c[q[qh]][j]=c[fail[q[qh]]][j];
15 }
16 void find(string s){
17     int pp=0,len=s.size();++iii;
18     for(int i=0;i<len;++i){
19         pp=c[pp][s[i]-'a'];int k=pp;
20         while(k){
21             if(al[k]==iii)break;
22             if(!bj[k].empty())for(int i=0;i<bj[k].size();++i)if(bj[k][i]<iii)p[++pcnt]=bj[k][i];
23             k=fail[k];al[k]=iii;
24         }
25     }
26 }

纯模板(最终常用形态)

事实上,trie树并没有什么用,基本上建的都是trie图

DP还是有点意思的,但是说白了都是一个套路

最短母串:

其实我用的不是AC自动机,因为没跑trie图所以没有必要建出来,只不过是把所有是别的串的字串者预处理干掉能让dp简单许多,最后没用AC自动机代码性能反而提高了。

文本生成器/禁忌:

裸的AC自动机跑trie图,就是问跑len步之后会停在哪里,或者路过了几个标记节点等等。。。禁忌稍微结合了一下矩阵快速幂,就没什么了。

教练把SPJ打错了还说我代码有问题嘤嘤嘤~3e6的输出答案误差1e-5我能怎么办呀?教练不读题然后还屠我两节课嘤。

背单词:

奇裸无比,是唯一一个没跑图而要找字串的。直接预处理字串,读入时忽视负权值字串能防T,然后裸DP,超无聊。

密码:

挺麻烦的一道题。关键是需要输出最后组成的串,存一大堆东西再逆DFS回溯回去就好了。

虽说病毒那道题是模板,但是它的思路值得一想。问是否存在无限长的串使之不匹配。

就是trie图无环啦

转载于:https://www.cnblogs.com/hzoi-DeepinC/p/11057983.html

[专题总结]AC自动机相关推荐

  1. AC自动机专题:配合最短路问题-HDU5411

    题目大意: 在欧几里得平面上给出n个点的坐标.你需要从1点走到n点取最短路.但是有m个限制条件:你的行走路径中不得含有m个路径片段 (类似a -> b -> c -).求最短路. 题目思路 ...

  2. YBT 2.4 AC自动机

    其实这个专题NOIP几乎不考 AC自动机,就是能让题自动AC的东西,是不是十分神奇 对的,就是这么神奇 AC自动机是解决多模式串与文本串匹配的问题 是KMP+Trie树的结合,也是一个毒瘤算法 Key ...

  3. 转自kuangbin的AC自动机(赛前最后一博)

    有了KMP和Trie的基础,就可以学习神奇的AC自动机了.AC自动机其实就是在Trie树上实现KMP,可以完成多模式串的匹配.           AC自动机 其实 就是创建了一个状态的转移图,思想很 ...

  4. Aho-Corasick 多模式匹配算法(AC自动机) 的算法详解及具体实现

    多模式匹配 多模式匹配就是有多个模式串P1,P2,P3-,Pm,求出所有这些模式串在连续文本T1-.n中的所有可能出现的位置. 例如:求出模式集合{"nihao","ha ...

  5. 【BZOJ2434】[NOI2011]阿狸的打字机 AC自动机+DFS序+树状数组

    [BZOJ2434][NOI2011]阿狸的打字机 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P ...

  6. AC自动机算法及模板

    AC自动机算法及模板 2016-05-08 18:58 226人阅读 评论(0) 收藏 举报  分类: AC自动机(1)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 关于 ...

  7. Keywords Search AC自动机QAQ

    AC自动机,一直以来都以为是一个非常高大上的算法,其实它还真的挺高大上的. 首先来说,ac自动机的思想与kmp类似,需要自己模拟来理解. 给两个博客: http://www.cppblog.com/m ...

  8. 字符串匹配算法 -- AC自动机 基于Trie树的高效的敏感词过滤算法

    文章目录 1. 算法背景 2. AC自动机实现原理 2.1 构建失败指针 2.2 依赖失败指针过滤敏感词 3. 复杂度及完整代码 1. 算法背景 之前介绍过单模式串匹配的高效算法:BM和KMP 以及 ...

  9. 【Luogu3041】视频游戏的连击(AC自动机,动态规划)

    题面链接 题解 首先构建出AC自动机 然后在AC自动机上面跑DP 转移很显然从Trie树的节点跳到他的儿子节点 但是要注意一个问题, 在计算的时候,每一个节点加入后能够 造成的贡献 要加上他的子串的贡 ...

最新文章

  1. 女生参加web前端培训可以吗
  2. MapReduce源码分析之作业Job状态机解析(一)简介与正常流程浅析
  3. GeoIP的使用-C语言版
  4. Win2003下Exchange2003部署图解之六
  5. MySQL的初识(python开发者的第一印象)
  6. php设计一个盒子类代码_PHP设计模式之简单工厂模式(Simple Factory)代码实例大全(七)...
  7. 阿里Q1财报:云计算付费用户首超100万
  8. 开源大数据:openLookeng 虚拟化引擎
  9. 谷歌了java集成开发_Spring整合Kaptcha谷歌验证码工具的开发步骤
  10. 记录C语言课程设计报告-图书管理系统
  11. 论文阅读(Chenyi Chen——【ACCV2016】R-CNN for Small Object Detection)
  12. 同义词,反义词(antonym,synonym)的英文表达理解
  13. 【转】 bio 与块设备驱动
  14. 使用函数打印n*n的乘法口诀表
  15. win10配置apache
  16. HSV色彩空间筛选 2021-10-06
  17. 教小白使用Vmware安装苹果虚拟机
  18. Android Studio之菜单栏制作
  19. 程序员要学习英文单词及翻译
  20. HDLBits-Circuits学习小结(四)D触发器(latches and flip-flops)

热门文章

  1. 我是买家的前世今生,该到了say goodbye的时候了!
  2. c# 重写override
  3. TreeView控件结合js树形选择 .
  4. 由一个Quiz想到的
  5. 《LeetCode力扣练习》第461题 汉明距离 Java
  6. win10 安装字体且不占用系统盘资源
  7. python的应用领域有哪些、选择题_Python程序的设计复习题与答案
  8. websphere安装应用失败_如何使用安卓手机给任天堂Switch安装游戏NSUSBloader mobile
  9. python基础实验报告答案_Python基础(上)实验报告
  10. 计算机 配置不过4000,台式机4000元以上免谈,非主流配置免谈