首页 > TAG信息列表 > 自动机

支持双端插入的可撤销回文自动机

支持双端插入的可撤销回文自动机 打多校看到的科技,板子++ 参考来源:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=53195473 template <class T, int SIZE, T offset> struct Depam { struct Node { int len, pos, fail; int nxt[SI

算法学习—————PAM回文自动机

时隔一年,第一次学习新的算法 原理和AC自动机差不多 基本思想: 两棵树分别代表奇偶 在一个回文串两边同时填上相同字符可以得到另一个回文串,以此构建两棵树 树上维护信息: 节点表示的回文串为当前位置的最长回文串 节点上维护当前位置最长回文串的长度,fail指针(当前回文串的

回文自动机(回文树)学习笔记

回文自动机(回文树)学习笔记 前置知识 建议提前学习 Manacher 算法 和其他任何一种自动机,方便理解,不过不学问题应该也不大。 定义 回文自动机(PAM),也称回文树,是存储一个字符串所有回文子串的数据结构。 PAM 由转移边和后缀链接构成,它的每一个状态都代表着一个回文子串。 设 \(u\stackr

2022暑假集训新学知识点总结

新学知识点 图论 树 1、树链剖分(求lca,dfs序等) 2、倍增lca 流 1、Dinic 最大流 2、匈牙利 二分图最大匹配 其他 1、spfa最短路判负环 字符串 1、后缀自动机SAM 2、回文自动机PAM 3、manacher(处理回文) 数学 1、线性基(求异或和最大值) 2、卷积ntt(其实不是很会)

ac自动机

模板 void insert() //建trie树 { int p = 0; for (int i = 0; str[i]; i ++ ) { int t = str[i] - 'a'; if (!tr[p][t]) tr[p][t] = ++ idx; p = tr[p][t]; } cnt[p] ++ ; } void build() { int hh = 0, tt = -1;

Trie数和AC自动机

字符串算法,随便学一下。 Trie树 字典树,用来求前缀的匹配。 比较简单,每一个字符都是一个节点,相同字符都是相同节点,然后就完了。 我们可以设这里插入的字符串分别是 abc cab bac bca 这就是 Trie 构造出来的样子,是不是一下就懂了?我们查询的时候根据这个树跳就完了。 代码也很好实

回文自动机(PAM)复习

PAM(回文自动机) 应用 本质不同回文子串个数:个串的本质不同回文子串个数等于回文树的状态数(排除奇根和偶根两个状态)。 回文子串出现次数:由于回文树的构造过程中,节点本身就是按照拓扑序插入,因此只需要逆序枚举所有状态,将当前状态的出现次数加到其 \(fail\) 指针对应状态的出现次数

题解 CF1575H Holiday Wall Ornaments

先对 \(b\) 跑一遍 KMP,建出它的 KMP 自动机。接下来考虑 DP。我们定义 \(dp[i][j][k]\) 表示在 \(a\) 串中做到位置 \(i\),\(b\) 串中匹配到位置 \(j\)(也是 KMP 自动机上的位置),目前已经匹配了 \(k\) 个字符串 \(b\),此时的最小代价。 转移的时候,枚举 \(a_i\) 这位填了什么,在 KMP 自

一些优秀的笔记

子序列自动机 莫队集合 | 分块与莫队 位掩码 | 位掩码*2

AC自动机

oj传送门 本质上是在trie树上套kmp的next数组(fail数组),用bfs按逐层遍历可以保证不重复和遗漏。 \\题目中要求出模式串重复次数,由于模式串自身较短,可以暴力失配找后缀匹配的模式串 #include<bits/stdc++.h> using namespace std; const int maxn=150*70+100; const int maxm=1e6+1

AC 自动机

重新学 \(AC\) 自动机发现以前就像没见过一样…… 首先是一段经典的话:“\(AC\) 自动机是 \(trie\) 树上跑 \(kmp\)” 于是 \(AC\) 自动机的关键在于运用 \(nxt\) 进行匹配 由于这时的 \(nxt\) 形成一棵树形结构,可以将一些匹配问题转化为树上问题 如果 \(x\) 匹配到了文本串,那么所

【模板】子序列自动机

link 其实感觉这玩意不应该叫什么自动机,这似乎就是一个个人yy出来的东西。。。 给定一个文本串和许多模式串,询问每个模式串是不是文本串的子序列。如果是询问字串的话直接上kmp即可,但子序列呢。考虑贪心,寻找文本中第一个和模式串第一个元素相同的元素位置,选择它相较于选择其它值相

回文自动机(PAM)

构造 有两个空根 0 和 1,分别是偶根和奇根。以偶根为根的树存储所有偶数长度的回文串,奇根同理。 因为 Lemma. 「\(s\) 的本质不同回文子串总数是 \(O(n)\)」,所以存得下。 Proof 设以 \(i\) 为尾的最长回文子串左端是 \(l_i\),加入 \(s_{i+1}\) 后,得到了 \(l_{i+1}\)。对于 \(\subse

广义后缀自动机

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

[CERC2014] Virus synthesis 题解

你谷 link 回文自动机好题,首先发现第二种操作的结果肯定是一个回文串,那么理想的结果肯定是一个回文串加上前后接一些杂字符,因为又是和字符串的所有回文子串相关,所以先建出回文自动机

[luogu6396] 要有光 题解

你谷 link 可以先给一份形式化题意: 给定一个初始串 \(S_0\) 和参数 \(m\),你可以进行一下 \(5\) 种操作: 对于一个串 \(S\),构造串 \(T\) 满足 \(T\) 为 \(S\) 的最长回文后缀,并将 \(S\) 赋值为 \(T\),代价为 \(A\)。 对于一个回文串 \(S\),构造串 \(T\) 满足 \(S\) 为 \(T\) 的最长回

P6139 【模板】广义后缀自动机(广义 SAM)

题目链接 P6139 【模板】广义后缀自动机(广义 SAM) 【模板】广义后缀自动机(广义 SAM) 题目描述 给定 \(n\) 个由小写字母组成的字符串 \(s_1,s_2\ldots s_n\),求本质不同的子串个数。(不包含空串) 输入格式 第一行一个正整数 \(n\)。 以下 \(n\) 行,每行一个字符串,第 \(i\) 行表示字符串

确定性有限状态自动机 DFA

前言 在计算理论中,确定有限状态自动机或确定有限自动机(英语:deterministic finite automaton, DFA)是一个能实现状态转移的自动机。对于一个给定的属于该自动机的状态和一个属于该自动机字母表Σ的字符,它都能根据事先给定的转移函数转移到下一个状态(这个状态可以是先前那个状态)。 可

细胞自动机与数据与表现分离

  细胞自动机的Java实现 一丶先说说这个题目吧,还是第一次接触这种类型的题目:生命游戏中,对于任意细胞,规则如下:每个细胞有两种状态-存活或死亡,每个细胞与以自身为中心的周围八格细胞产生互动。当前细胞为存活状态时,当周围低于2个(不包含2个)存活细胞时, 该细胞变成死亡状态。(模拟生命

细胞自动机和数据与表现分离

细胞自动机     ~死亡:如果活着的邻居的数量<2或>3,则死亡     ~如果正好有3个邻居活着,则新生     ~其他情况则保存原状   数据与表现分离     ~程序的业务逻辑与表现有关       ~表现可以是图形的也可以是文本的       ~表现可以是当地的也可以是

java 进阶P-6.2+P-6.3

细胞自动机 CellularAutomation(细胞自动机)细胞自动机(英语:Cellular automaton),又称格状自动机、元胞自动机,是一种离散模型,在可算性理论、数学及理论生物学都有相关研究。它是由无限个有规律、坚硬的方格组成,每格均处于一种有限状态。整个格网可以是任何有限维的。同时也是离散的。

冯·诺伊曼计算机科学

冯·诺伊曼计算机科学   摘要:         20世纪40年代,在计算机诞生的初期,计算机主要是被用来进行科学计算的,因此被为“计算机”,但是,现在的计算机的功能已经远远超出了“计算”这项功能,它还可以进行数字、文字、图形、图像以及声音等各种形式的数据处理,并且能够按照最初的存储程

后缀自动机 SAM

struct NODE { int ch[26]; int len,fa; NODE(){memset(ch,0,sizeof(ch));len=0;} }dian[MAXN<<1]; int las=1,tot=1; void add(int c) { int p=las;int np=las=++tot; dian[np].len=dian[p].len+1; for(;p&&!dian[p].ch[c];p=dian[p]

L 语言 [AC自动机][状态压缩]

题目链接[洛谷] 题目大意: 给出一个大小为 n 的模式串集合 S,m 个目标串 t,找出每个 t 中能由 S 中任意个模式串(可重复使用)拼接成的最长前缀。 1 ≤ n ≤ 20,1 ≤ m ≤ 50,1 ≤  ∣s∣ ≤ 20,1 ≤ ∣t∣ ≤ 2×106 思路: 首先考虑一下我们用字典树是怎么匹配的。假设我们在目标串的某处

后缀自动机 (SAM) 学习笔记

定义 后缀自动机(\(\text{Suffix Automaton}\),简称 \(\text{SAM}\))是一种用于字符串处理的有限状态自动机(\(\text{DFA}\)),它根据母串的所有后缀构建,能识别出母串的所有子串,且构造算法复杂度接近线性,实际上是 \(O(n\log |\Sigma|)\),\(|\Sigma|\) 是字符集大小,这里将 \(|\Sigma|\) 看