• 2024-11-19【算法】AC 自动机
    1.算法简介AC自动机,是用来多模式匹配串的算法。最好可以做到\(O(\sum|t_i|\times|\sigma|+|s|)\)。(预处理\(O(\sum|t_i|\times|\sigma|)\),查询时间复杂度为\(O(|s|)\))。2.算法流程AC自动机可以处理这样的问题:给定\(n\)个匹配串和一个模式串,求出模式串中出现了
  • 2024-11-18一维单车道交通流元胞自动机模型综述
    引言现代社会普遍面临严重的交通问题,对交通流理论的研究可以建立能描述实际交通一般特性的交通流模型,以揭示控制交通流动的基本规律,从而有效地进行交通规划、交通管理与控制以及交通能源节约等方面的研究。传统的交通流模型主要有车辆跟驰模型、流体动力学模型、车辆排队模型等
  • 2024-11-1411.14
    三个题的理论复杂度都遥遥领先!!!\(100+95+100=295\)感觉有点送,可能是中途要穿插信息会考的原因?A.没找到⚪状压复杂度\(10\times10^5\times10=10^7\)太劣了!让我们建个\(\text{AC}\)自动机,\(10\times500\times10=5\times10^4\)遥遥领先。所以怎么才能保证自己写完\(\text{
  • 2024-11-10AC 自动机
    OI-wikiLinkandbilibiliLinkAC自动机,主要用于解决多模式串(即需要求出出现次数等的串)匹配的问题,基于字典树。大致将模式串建到字典树上,对每个字典树上的节点求出失配指针,根据失配指针建立失配树,用失配树来维护模式串出现次数。具体构建建立字典树略。失配fail指针
  • 2024-10-24AC自动机
    今天复习了一下AC自动机,原理不再赘述,直接看其他优质博客讲解即可。本文更偏向于AC自动机的用法,记录一下模板题的代码:1.只检查模式串是否在主串中出现————https://www.luogu.com.cn/problem/P3808code:https://www.luogu.com.cn/record/1846121282.检查每个模式串在主串
  • 2024-10-12AC自动机学习
    左程云讲解102加了fail指针的前缀树通过在前缀树上构建fail指针,如下图,abcda,abcdb,bcdc如果我要查询的是abcdcdc先顺着1234号结点向下,abcdc,遇到最后的c时当前串上找不到了,通过fail跳到bcdc串上,因为abcd后缀和bcdc前缀重合,这么跳能减少重新匹配的成本相当于对于要查询的串,我先从
  • 2024-10-01软件设计师:02程序语言设计
    文章目录一、KMP模式串匹配二、编译程序和解释程序(1)编译程序(2)解释程序三、传值调用和引用调用(1)传值调用(2)引用调用四、编译器工作阶段(1)词法分析(2)语法分析(3)语义分析(4)中间代码(5)目标代码生成五、脚本语言六、符号表七、沟通路径八、正规式九、有限自动机(1)确定的有限自动机
  • 2024-09-22AC自动机详解,原理、优化分析,代码实现
    零、前言对于模式串匹配问题,在很多基础的数据结构课程中都有涉及到,如KMP算法,BM算法,Trie。但是给定文本串,我们有多个模式串要去查询。难道要多次调用KMP/BM,或者在Trie上多次查询吗?Aho和Corasick基于Trie,对KMP进行了推广,使得Trie可以在一个文本串中识别一个关
  • 2024-09-15ZR24NOIP1B. 数数
    ZR24NOIP1B.数数给你一个长度为\(n\le1600\)的二进制数,其中某些位未知,是?。问?的所有取值得到的\(x\),\([0,x-1]\)中不含长度为\(k\le20\)的回文串的数字(含前导\(0\))的个数的和。首先显然是数位DP。考虑从高位枚举到低位,假设没有?,状态记位数\((1600)\)和是否顶
  • 2024-09-12从kmp到AC自动机
    知道kmp的请跳过这一段找到最清晰的解析kmp我看了约114514个解析才搞懂如何求next首先,next[i]本应表示0~i的字符串的最长相同前缀后缀的长度。不过为了方便匹配,实际可以存最长相同前缀后缀时前缀最后一个的地址听起来好绕那这么说吧:例如串abaabaabaabnext[0]=-1肯定找
  • 2024-09-07计算理论初步——形式语言与自动机
    形式语言入门一、字符串理论1.理论模型:AAA是一个有限字母集,我们定义AA
  • 2024-08-25AC自动机
    简单版题目描述给定\(n\)个模式串\(s_i\)和一个文本串\(t\),求有多少个不同的模式串在文本串里出现过。两个模式串不同当且仅当他们编号不同。思路我们可以将所有模式串存进\(trie\)树中,像这样:此时如果我们朴素地查找,那显然会超时,因此我们可以使用类似\(KMP\)算法
  • 2024-08-25回文自动机小记
    构建口胡一下过程:\(fail\)边指向自己的最长回文后缀(偶根指向奇根)。定理:每添加一个字符,至多新增一个新的本质不同的回文串,且是所有回后缀中最长的。由此得出推论:本质不同的回文子串(回文自动机的点数)不超过|S|暴力跳终止链,找到第一个左侧有\(x\)的回文后缀\(v\)。
  • 2024-08-25AC 自动机 学习笔记
    前言本来时今年寒假学的,当时回家比较早没学完也没学明白,打模拟赛却多次用到,所以重学一下。原理与定义即字典树(trie树)加\(fail\)指针,\(fail\)指针等同于kmp的\(next\)数组,匹配前缀的最长后缀,\(fail\)指针单独拎出来构成一颗失配树(fail树)。插入同trie树,全部插完后
  • 2024-08-23程序设计语言基础-有限自动机+正规式
    不确定的有限自动机NFA该状态机在任何一个状态,基于输入的字符都不能做成一个确定的状态转换,这里分为两种状况。对于一个输入,它有两个状态可以转换。存在ε的情况,即没有任何字符输入的情况下,NFA可以从一个状态迁移到另一个状态。确定的有限自动机DFA该状态机在任何一个状
  • 2024-08-22AC 自动机查漏补缺
    AC自动机查漏补缺前言今年1月份学过一次,当时自以为掌握得很好,实际上就是依托答辩。而且还有很多地方是有严重误导性的。所以这篇查漏补缺就是记录一下自己对AC自动机尚不完全掌握的地方。并对之前的那篇不太正确的题解进行纠正。因此,在这样的背景下,这篇文章注定就不是给初
  • 2024-08-18AC自动机
    AC自动机前言我觉得AC自动机这种东西非常抽象,有必要写一篇博客来整理一下,以加深理解。概况AC自动机是以Trie树的结构为基础,结合KMP思想建立的自动机,用于解决多模式串匹配等任务。一般来说,建立一个AC自动机有两个步骤:把所有的模式串建成一颗Trie树。用KMP的思想对
  • 2024-08-182024.8.11至2024.8.17周总结
    本周学习任务清单1.字符串:Hash、KMP、trie树、拓展KMP(Z函数)、AC自动机、Manacher、回文自动机、后缀数组、后缀自动机、广义后缀自动机2.数论:欧拉函数、莫比乌斯函数、欧拉反演、莫比乌斯反演、筛法、杜教筛、min25筛3.博弈论:公平组合游戏、反常游戏、SG函数总结本周学习的
  • 2024-08-15AC自动机
    AC自动机AC自动机是以\(Trie\)的结构为基础,结合\(KMP\)的思想建立的自动机,用于解决多模式串(作为子串的串)匹配等任务。建\(tire\)树,正常操作即可建\(fail\)树,如果当前节点失配,可以通过跳\(fail\)快速转到一个可能有答案的位置,相当于\(kmp\)但是在树上考虑所有模式串
  • 2024-08-15单词
    考虑暴力怎么做。一个很自然的想法就是枚举每个模式串,并将当前枚举到的模式串作为文本串,然后内层循环再依次枚举模式串,看每个模式串在文本串中出现了多少次发现上述过程与AC自动机的匹配很像,于是建立AC自动机,将每个串都放在AC自动机上跑query,当前跑到的u就代表这个串的一个前缀,然
  • 2024-08-15自动机合集(未完)
    备注:我不知道fail会不会和什么东西重名。(因为感觉这个单词挺完整的)自动机的概念不是很清楚自动机的概念。暂且认为:自动机是一个有向图。点(状态)代表字符串(可能不止一个),边(转移)(可能)带一个字符,表示在字符串的末尾加上这个字符后到达的状态。有一个源点(PAM有两个),代表初始状态。有
  • 2024-08-15修复DNA
    AC自动机上DP的典型题目假设我们已经获得了最终的串,那么将这个串放在AC自动机上匹配的时候,一定是不会匹配到一个模式串的,我们考虑利用这一点来DP设\(f[i][j]\)表示将经过修改后的文本串的前\(i\)个字符放在AC自动机上匹配中途没有匹配到模式串且当前匹配到AC自动机的\(j\)号节点
  • 2024-08-15AC 自动机(简单版)
    具体讲解看OI-wiki就好了构建字典图的那个位置,只用理解路径压缩就好了;在路径压缩完了之后,tr[u][i]表示的是状态\(u\)接上一个字符\(i\)所表示的字符串能够与\(Q\)所匹配的最大后缀长度。形式化地,设\(s=u+i\),令\(P\)为\(s\)的后缀集合,tr[u][i]=\(\max(|p|)\),其中\(p∈P\)且存在\(v
  • 2024-08-14字符串
    byT_Q_X回文自动机(\(PAM\))回文自动机\(PAM\)是一个能够识别一个字符串所有的回文子串的自动机,是一个字符串所有回文子串的信息的高度压缩得到的结果。回文自动机维护了原串上的所有本质不同的回文串。回文自动机的结构可以看成是两棵树,一棵的根是奇根\(odd\),代表着一个长