记录学习后缀自动机看的资料便于复习、为后来人提供优质选择 )理论: 2012年noi冬令营陈立杰讲稿/*课件里并没有对于后缀自动机节
原创
2023-07-07 13:57:11
50阅读
终于看懂了,写一点东西以防忘记,不保证讲的都对 1.什么是自动机?自动机是指对于一个自动机A,如果能识别字符串S,那么A(S)=true,否则A(S)=false,就像AC自动机能够识别给定文本中特定的文本一样。 1.5:后缀自动机和AC自动机一样,有两个比较重要的东西,AC自动机一般我们会碰到在自
转载
2017-11-17 21:15:00
69阅读
2评论
后缀自动机 也叫SAM(suffix automaton) 自闭了。我实在是理解不了后缀自动机的建立和一些性质 我真的理解不了。不浪费时间了 等有空了再理解吧。 只要会用就行了 我一定会用的非常的熟练的加油~但是这篇学习笔记还是要有的 如果哪一天突然的顿悟了呢?前进前进。 注意我们学习的东西叫做后缀
转载
2020-01-08 17:27:00
201阅读
2评论
简介后缀三姐妹:后缀数组,后缀自动机,后缀树。 后缀自动机:Suffix Automation,也叫SAM。 创立算法的思路来源:能不能构出一个自动机(本质就是一个有向图),能识别一个串的所有后缀。识别所有后缀基础想法把所有的后缀都放进一个trie里面,比如串aabbabd。 这样的状态太多了,怎么把状态数缩小。减小状态数的方法定义一个子串的right集合为这个子串在原串中出现的右端点集合。 如果
原创
2022-12-26 18:18:27
119阅读
代码#include<bits/stdc++.h>using namespace std;char s[2000100];long long Ans;int n;struct SAM { int mp[2000100][30],fa[2000100],ed,ccnt,len[2000100],siz[2000100]; int head[2000100],nxt[2000
转载
2019-09-06 07:46:00
118阅读
2评论
后缀自动机// Created by CAD#include <bits/stdc++.h>using namespace std;const int maxn=1e6+5;namespace sam{ int len[maxn<<1],link[maxn<<1],Next[maxn<<1][26]; int sz,last; vo
原创
2022-11-03 15:27:07
108阅读
后缀自动机: 构造非常巧妙,需要及时复习。 #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #include<sstream> #include<queue> #inc ...
转载
2021-04-23 21:14:00
131阅读
2评论
后缀自动机 水题清单 例题选记 一 P3804 【模板】后缀自动机 (SAM) 题意: 请你求出 S 的所有出现次数不为 1 的子串的出现次数乘上该子串长度的最大值。 做法: 把每次插入字符新建的节点时记为一,之后在parent树上将儿子的节点值累加到父亲上,该处的节点值即为此节点上所有字符串的出现 ...
转载
2021-07-31 21:00:00
272阅读
2评论
首先补一点自动机的知识,有状态集合,字符集,初始状态,终止状态和状态转移,反正我是学了AC自动机才理解这些东西的。当时Clj讲的时候,感觉很快,各种概念没有跟上来,现在回头弄一弄。首先如果直接用后缀构字典树的话发现最坏会达到n^2级别的点。如下aabbabd的构树。那么现在就要想办法减少节点。现在的任务就是构一种图,使得从s到终止状态的路径都是后缀,且这些后缀包含了所有的后缀。后缀自动机就是在n级
转载
2023-04-24 02:56:19
46阅读
理解起来好困难啊QAQWIKIOI3160 求两个串的最长公共子串见CLJppt 1 char s[maxn]; 2 struct sam 3 { 4 int n,last,cnt; 5 int go[maxn][26],l[maxn],fa[maxn]; 6 void ad... Read More
转载
2015-04-07 00:07:00
60阅读
2评论
##概述 后缀自动机可以接受字符串的全部子串,并且时空复杂度均为线性。 自动机的转移图是个 DAG,在图中走出的任意一条路径对应着一个子串。 后缀树每个状态的父亲代表着最长不在状态中的并且后缀集合包含该状态的字符串所在结点。 ##性质 其中的每个结点对应着右端点出现位置完全相同的字符串的集合。 容易 ...
转载
2021-04-09 23:12:00
230阅读
2评论
P3804 【模板】后缀自动机 (SAM) #include<bits/stdc++.h> using namespace std; const int N=2e6+100; typedef long long ll; char s[N]; int ch[N*2][26],len[N*2],fa[N
转载
2020-02-07 19:46:00
163阅读
2评论
http://hihocoder.com/problemset/problem/1449 求长度为k的子串
转载
2018-03-28 19:50:00
63阅读
理解的不够深 故只能以此来加深理解 。我这个人就是蠢没办法 学长讲的题全程蒙蔽。可能我字符串就是菜吧,哦不我这个人就是菜吧。 AC自动机的名字 AC 取自一个大牛 而自动机就比较有讲究了 不是寻常的东西呢。 自动机由5部分组成 1 字符集 2 状态集合 3 初始状态 4 结束状态集合 5 状态转移函
转载
2019-07-12 07:07:00
333阅读
2评论
Text自动机的概念此处不解释。。引入我们需要一种数据结构能够识别一个字符串S的所有后缀一种方法是直接建一棵Trie树,把每
原创
2017-12-07 17:32:56
140阅读
第一部分 自动机的预备知识 自动机的功能是识别字符串,一个自动机A,若它能识别字符串S,就记
原创
2021-08-27 15:44:33
358阅读
后缀自动机真的可以为所欲为。 前提是可以分组处理。 hash不够用,复杂度不够用,后缀自动机强无敌。 1,求字符串有多少不同字串,直接取每一组st的长度。见hihocoder1445。 2,如果需要求同一种串出现的次数,对同一后缀,用slink逆向推出,从长到短。如aab到aaab。见hihocod
转载
2017-11-24 15:18:00
114阅读
2评论
PAM-回文自动机解释:回文自动机是接受一个字符串的所有回文子串的自动机。定义:节点:回文自动机中每个点表示在它的父节点两侧各加上一个儿子字符。奇根偶根:由于回文串有奇数长和偶数长两种情况,所以我们的回文自动机会有两种根-奇根和偶根。偶根的节点编号为 \(0\) ,所代表的回文串长度为 \(0\) , \(fail\) 指针指向奇根奇根的节点编号为 \(1\) ,所代表的回文串长度为 \(-1\
转载
2021-09-24 23:01:00
192阅读
2评论
P3804 【模板】后缀自动机 (SAM)这玩意真不是人学的东西目前只看懂了一般,解释待补把先存个代码#include <bits/stdc++.h>using
原创
2022-02-08 11:44:04
77阅读
原论文(俄文)地址:suffix_automata后缀自动机后缀自动机(单词的有向无环图)——是一种强有力的数据结构,让你能够解决许多字符串问题。例如,使用后缀自动机可以在某一字符串中搜索另一字符串的所有出现位置,或者计算不同子串的个数——这都能在线性时间内解决。 直觉上,后缀自动机可以被理解为所有子串的简明信息。一个重要的事实是,后缀自动机以压缩后的形式包含了一个长度为n
转载
2023-01-09 15:09:48
140阅读