首页 > TAG信息列表 > Endpos

SAM复习

定义 SAM的定义 字符串\(s\)的SAM是一个可接受\(s\)的所有后缀的最小\(DFA\)(确定的有穷自动机),可以参考编译原理的龙书(强烈推荐) SAM是一张有向无环图。节点被称作状态,边被称作状态之间的转移 存在一个初始状态\(t_0\),其他各结点都可以从\(t_0\)出发到达 没有输出\(\epsilon\)

CF963D Frequency of String 题解

首先有一个结论,对于 \(m\) 个互不相同的模式串 \(t_i\) ,他们在文本串 \(s\) 中的出现次数之和(即 endpos 大小之和)是 \(O(|s|\sqrt {\sum |t_i|})\) 的。 证明考虑把模式串按长度分类,那么对于长度为 \(l_i\) 的一些模式串,他们在 \(s\) 中出现的次数之和至多是 \(n-l_i+1\) 。由于

广义后缀自动机

广义SAM的定义 广义SAM是针对Trie树(广义字符串)构建的、能接受所有广义后缀(Trie树叶子路径)的最小DFA 同理,我们可以知道广义SAM是针对广义endpos建立的、以广义后缀为终止点的DFA 广义SAM的理论基础 广义endpos 略 线性状态数 略 转移数 这里注意,由于Trie树的后缀是\(O(n^2)\)个,所以

理性理解 SAM の笔记

之前学过 SAM 但是过不久就发现“忘记”了,究其故里就是没有真正理解 SAM 原理。 故特此记录,大部分知识均来源于: 后缀自动机(SAM)学习笔记 - ouuan的博客 后缀自动机 (SAM) - OI Wiki 确定性有限状态自动机(DFA) 为了方便还是需要引入 确定有限状态自动机(DFA),顺便规范符号。 一个 DFA

【瞎口胡】后缀自动机(SAM)

前言 后缀自动机(Suffix Automaton, SAM)是一个能解决许多字符串相关问题的数学模型。 需要注意的是,自动机不是算法,也不是数据结构,而是一种数学模型。实现同一种自动机的方法不同可能会造成时空复杂度不同。 以下问题都可以在线性时间内通过 SAM 解决: 在另一个字符串中搜索一个字

SAM 基础

SAM 的定义 SAM 是一张有向无环图。结点被称作 状态 ,边被称作状态间的转移 图存在一个源点 \(t_0\) ,称作 初始状态,其它各结点均可从 \(t_0\) 出发到达 每个 转移 都标有一些字母。从一个结点出发的所有转移均不同 存在一个或多个 终止状态 。如果我们从初始状态 \(t_0\)

Codeforces 1276F. Asterisk Substrings (3400)

给定一个全由小写字母组成的字符串 \(s\),设 \(t_i\) 表示将 \(s\) 中的第 \(i\) 个字符替换成 \(*\) 后得到的字符串,求字符串集合 \(\{s,t_1,\ldots,t_{|s|}\}\) 的本质不同的子串数量(包含空串)。 \(1\le |s|\le 10^5\)。 首先答案的构成一定是 \(\{\empty,*,s*,*s,s*t\}\) 五种

【CF 700E】Cool Slogans

CF 700E。 Description 给出一个长度为 \(n\) 的字符串 \(\mathrm{str}\)。你需要构造一个尽量字符串序列 \(s_1, s_2, \cdots, s_k\),满足: 对于任意 \(1 \leq i \leq n\),\(s_i\) 为 \(\mathrm{str}\) 的子串。 对于任意 \(1 < i \leq n\),\(s_{i - 1}\) 在 \(s_i\) 中至少出现了两

SAM复杂度证明

关于$SAM$的复杂度证明(大部分是对博客的我自己的理解和看法) 这部分是我的回忆,可省略 先回忆一下$SAM$ 我所理解的$SAM$,首先扒一张图 初始串$aabbabd$ 首先发现,下图里的$S->9$的一条直线是$aabbabd$是原串 那么从这里我们就可以看到$endpos$关系了,和$AC$自动机不同的是 发现

SAM

 SAM构成用最少的状态存一个字符串的所有后缀状态对于$S=aabbabd$的后缀自动机发现所有的后缀都能从根节点的一条路线遍历出来发现此时节点最少。所有的子串都能在上面表示出来,且不是子串不存在。绿色虚线是$Link$,一个转移工具。SAM的状态集子串结束位置集合叫$endpos$一个子串$

「笔记」后缀自动机 new

目录一、一些概念1. Endpos 集合2. Parent Tree二、后缀自动机1. 状态 & 转移2. 构建3. 复杂度4. 模板三、简单应用1. 子串相关2. 最长公共子串3. 字典序相关四、广义 SAM1. 离线做法2. 在线做法 之前学过现在忘光了呜呜。2021.12.30 重写,好像写的有点乱。 一、一些概念 后缀自动

CF700E Cool Slogans

首先可以发现选出的字符串序列一定可以调整成 \(s_i\) 为 \(s_{i + 1}\) 的一段后缀。 注意到这本质上是一个关于子串选择,与子串出现位置有关的问题,于是考虑借助 \(\rm endpos\) 来解决。 那么这个问题本质上就是选择后缀自动机 \(\rm parent\) 树上一条合法的祖先链。 由于 \(\rm

使用UGUI原生开发连线/画线

先上效果图:  红色就是连线的效果,可以用在状态机之间的连线,也可以通过简单修改,改为在图片上涂鸦。 注:如果使用的是LineRenderer实现的话虽然也能达到这个效果,但是不能与原生UI一致,导致不能使用遮罩,层级只能在其它UI的最上层或者最下层。   实现方法:    通过继承MaskableGraph

SAAAAAAAAM学习笔记。

不知道啥时候会弃坑。。。 本来想着用后缀数组能把后缀自动机专题的水个遍呢,结果还是无法做到,于是还是来学SAM了。。。然后发现SAM比SA难懂多了,被迫记个笔记。。。 写的仅代表当时的想法。 像trie树一样,后缀自动机可以用\(O(n)\)的时空来表示出一个字符串的所有子串,便于理解,用到了

【题解】[TJOI2015]弦论

[TJOI2015]弦论 感觉啥都不会就来补自己的弱项了…… \(\text{Solution:}\) 第 \(k\) 小的子串,这东西长得很平衡树。 回忆一下,我们在平衡树上找第 \(k\) 大的做法:记录左右孩子的 \(siz,\) 与 \(k\) 比较大小,不断二分。 那么,同样地,在这题里面,考虑如何类似地在 SAM 上面做这件事情。

后缀三姐妹 笔记

目录后缀三姐妹 笔记符号后缀数组 (Suffix Array / SA)基本定义如何求后缀树 (Suffix Trie)如何应用后缀自动机 (Suffix Automaton / SAM)基本定义&性质&简单证明自动机点的含义与性质后缀链接link如何构造如何应用填坑:建后缀树 后缀三姐妹 笔记 迫真百合番 符号 \(\Sigma\) :字符

SAM 学习笔记

目录后缀自动机基本定义$endpos$ 等价类引理 $1$:若 $s_1$ 是 $s_2$ 的后缀,则 $endpos(s_2) \subseteq endpos(s_1)$引理 $2$:对于两个字符串 $s_1,s_2\ (|s_1| \leq |s_2|)$,那么要么 $endpos(s_2) \subseteq endpos(s_1)$,要么交集为空。$parent$ 树SAM 存储的信息$link$$len$$next$

[SAM学习笔记]

声明:这篇是给我自己看的笔记,估计会写得很乱,如果对您没有帮助,建议速换一篇学习。 —————————————————————————————————————————————————————————— 后缀自动机(suffix automaton, SAM) 是一个能解决许多字符串相关问题的

后缀自动机总结

一些定义 endpos("") 表示一个 S 的子串在 S 中出现的结束位置集合。每个子串都有一个 endpos 集合,可能有一些子串的 endpos 集合相同,就合并,构成后缀自动机节点。也即一个节点代表一个 endpos 集合的等价类,里边包含一些串,容易知道这些串是连续的,且互为包含关系。一个点的 endpos

使用链表实现连续分段数据的标签显示

之前的一篇文章自编数据标注(分割)软件 之 数组嵌套实现哈希函数的数据分片应用介绍了如何显示数据点的活动标签。但是并不特别符合当前的需求,并无法达到动态修改每段数据的标签值,因为其中的labelNum是由slice获取得的,并且是从头到尾遍历进行的赋值操作,算法复杂度较高为O(n),即在每一

el-input 给输入框选中内容前后添加标签,主要用substring字符串截取

参考链接:https://segmentfault.com/q/1010000017101606/a-1020000017103333 tagContent(){ let selection = window.getSelection();//获取选中内容 var elInput = document.getElementById('summaryInsert');//获取dom var startPos = elInput.selection

后缀自动机(Suffix Automaton)

后缀自动机(Suffix Automaton) 一个基于后缀自动机的另一种统计子串出现次数的方法 万字(符)长文,博客阅读 定义 一个字符串的后缀自动机(SAM)是一个 DAG(Directed Acyclic Graph),边(或者说转移)带权,权值是一个字符,除了起始节点 \(O\),节点分为两种,一种是中间节点,只是为了连边而新建的节点,一种

后缀自动机详解

当想让学妹看博客时,怕旧的写的太烂被嫌弃,又怕新的看不懂……哎 一、定义: 单词的有向无环图 二、作用 从原点出发形成的所有路径即为单词的所有子串,并且通过维护endpos和endpos类,得知每个串出现的次数和出现的位置 三、构建后缀自动机 一些性质: endpos :数集,一些子串他们出现的位

【转】后缀自动机

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi:今天我们来学习一个强大的字符串处理工具:后缀自动机(Suffix Automaton,简称SAM)。对于一个字符串S,它对应的后缀自动机是一个最小的确定有限状态自动机(DFA),接受且只接受S的后缀。 小Hi:比如对于字符串S="aabbabd",它的

后缀三姐妹 笔记

目录后缀三姐妹 笔记符号后缀数组 (Suffix Array / SA)基本定义如何求后缀树 (Suffix Trie)如何应用后缀自动机 (Suffix Automaton / SAM)基本定义&性质&简单证明自动机点的状态后缀链接link如何构造如何应用建后缀树 后缀三姐妹 笔记 没错这是百合番(迫真) 符号 \(\Sigma\) :字符集