后缀自动机
_Ark
这个作者很懒,什么都没留下…
展开
-
一文读懂后缀自动机 Suffix_Automata
原论文(俄文)地址:suffix_automata原翻译(中文)地址:后缀自动机详解(DZYO的博客)Upd:强推浅显易懂(?)的SAM讲解后缀自动机后缀自动机(单词的有向无环图)——是一种强有力的数据结构,让你能够解决许多字符串问题。例如,使用后缀自动机可以在某一字符串中搜索另一字符串的所有出现位置,或者计算不同子串的个数——这都能在线性时间内解决。直觉上,...转载 2018-07-31 09:55:38 · 617 阅读 · 0 评论 -
Luogu P3804 【模板】后缀自动机
注意空间开两倍#include <bits/stdc++.h>using namespace std;typedef long long LL;template<class T>inline void read(T &num) { register char ch; register int flg = 1; while(!isdigit(c...原创 2019-04-01 11:50:12 · 130 阅读 · 0 评论 -
BZOJ 4032: [HEOI2015]最短不公共子串 (dp*3 + SAM)
转博客大法好第4个子任务中,为什么只转移最近的一个位置,自己YY吧(多YY有益身体健康).#include <bits/stdc++.h>using namespace std;typedef long long LL;template<class T>inline void read(T &num) { register char ch; reg...原创 2019-04-01 12:33:19 · 190 阅读 · 0 评论 -
后缀自动机详解!
易懂的SAM讲解转载 2019-04-01 15:34:44 · 225 阅读 · 0 评论 -
BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡(广义后缀自动机 多串)
因为任何一条路径都可以看做某两个叶子节点之间路径的一部分,然后分别把20个叶节点当作根,把整棵树看作trie树,那么一条路径就能看作是从根到某个点这一条路的后缀,构建SAM就能维护不同子串的个数了.#include <bits/stdc++.h>using namespace std;typedef long long LL;char cb[1<<15],*cs=c...原创 2019-04-01 17:18:57 · 107 阅读 · 0 评论 -
BZOJ 2946 [Poi2000]公共串 (二分+Hash/二分+后缀数组/后缀自动机)
求多串的最长公共字串.法1: 二分长度+hash 传送门法2: 二分+后缀数组 传送门法3: 后缀自动机拿第一个串建自动机,然后用其他串在上面匹配.每次求出SAM上每个节点的最长匹配长度后,再在全局取最小值(因为是所有串的公共串)就行了.CODE#include<bits/stdc++.h>using namespace std;char cb[1<<15]...原创 2019-04-01 20:28:20 · 227 阅读 · 0 评论 -
BZOJ 2882: 工艺 (SA/SAM/最小表示法)
我写的O(nlogn)O(nlogn)O(nlogn)的SA 8000ms被O(n)O(n)O(n)的SAM 2800ms和O(n)O(n)O(n)的最小表示法 500ms头都锤爆…CODE贴上大常数选手的代码#include<bits/stdc++.h>using namespace std;char cb[1<<15],*cs=cb,*ct=cb;...原创 2019-04-02 08:09:57 · 200 阅读 · 0 评论 -
后缀自动机再复习 + [USACO17DEC] Standing Out from the Herd
here:https://oi-wiki.org/string/sam/下面转自 KesdiaelKen的雷蒻论坛原创 2019-07-17 17:02:31 · 195 阅读 · 0 评论