#include <cstring> #include <cstdio> #define max(a,b) a>b?a:b const int mn=300005; struct Trie{ int father,fail,next[26]; void ...
传说中的对联算法套路题,先贴代码,题解咕咕咕。 上联:AC自动机fail树dfs序建可持久化线段树 下联:后缀自动机next指针dag图上跑SG函数 上联这几个算法学了很久了,今天才把这题做了,虽然csl说是套路题,但感觉真的很难,下联的还差后缀自动机正在学,学好了再贴代码。 ...
2020-10-08 23:56 0 423 推荐指数:
#include <cstring> #include <cstdio> #define max(a,b) a>b?a:b const int mn=300005; struct Trie{ int father,fail,next[26]; void ...
【可持久化线段树】【P5826】【模板】子序列自动机 Description 给定一个序列 \(A\),有 \(q\) 次询问,每次询问一个序列 \(B\) 是不是 \(A\) 的子序列 Limitations 序列 \(A\) 长度不超过 \(10^5\),询问序列长度之和不超过 ...
dfs序+线段树,啥?如果在一棵树上,需要你修改一些节点和查询一些节点,如果直接dfs搜的话肯定超时,那用线段树?树结构不是区间啊,怎么用?用dfs序将树结构转化为一个区间,就能用线段树进行维护了。 dfs序是指:每个节点在dfs深度优先遍历中的进出栈的时间序列,记录每个点进栈和出栈的时间点 ...
【CF666E】Forensic Examination(后缀自动机,线段树合并) 题面 洛谷 CF 翻译: 给定一个串\(S\)和若干个串\(T_i\) 每次询问\(S[pl..pr]\)在\(T_l..T_r\)中出现的最多次数,以及出现次数最多的那个串的编号。 题解 好题 ...
AC自动机 AC自动机,说白了就是在trie树上跑kmp(其实个人感觉比kmp容易理解)。是一种多匹配串,单个主串的匹配。概括来说,就是将多个匹配串构造一个trie树,对于每个trie树的节点构造nxt指针,最后把主串放在上面跑。 构造trie树 和普通的trie树构建一样,没有什么 ...
过程 fail指针可以说是AC自动机里最难理解的东西,怎样更好的理解AC自动机的fail指针? 先来看一幅图: 看这幅图上的fail指针是怎么构造的. 树上的词分别是: {he,hers,his,she} 按图所示分成3层。看到第三层,是"she",其中: 下面以"she"创建 ...
树和AC自动机的密切相关,我想一起讲完哈哈。。。看过前面博文的同学应该都知道了,AC自动机其实就是相当 ...
题目描述 给定一棵n个点的有根树,编号依次为1到n,其中1号点是根节点。每个节点都被染上了某一种颜色,其中第i个节点的颜色为c[i]。如果c[i]=c[j],那么我们认为点i和点j拥有相同的颜色。定义depth[i]为i节点与根节点的距离,为了方便起见,你可以认为树上相邻的两个点之间的距离 ...