E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
----后缀自动机
HDU 4622 Reincarnation (查询一段字符串的不同子串个数,
后缀自动机
)
如果单单是求一个字符串的不同子串个数,无论是后缀数组还是
后缀自动机
都非常容易实现。Nfa->len,p->len]之间的,个数也就清楚了。
Ezereal
·
2020-07-31 13:32
字符串—后缀自动机
【
后缀自动机
】HDU4622[Reincarnation]题解
题目概述求一个字符串[L,R]中不同子串的个数。解题报告又是一道SAM的经典应用,不过同样的还是需要转化。我们发现一个状态s会father(s)多出一些子串,但是多了哪些呢?看图:从图中可以比较明显的看出多出的部分就是s->MAX-father(s)->MAX,而每次插入并不会引起大规模变化,所以我们一边扩展,一边修正子串个数tot就行了。这道题是多次询问,所以我们构造n次SAM预处理答案就可以了
ZigZagK
·
2020-07-31 13:30
HDU题解
后缀自动机
hdu4641 K-string,
后缀自动机
,并查集
如果你已经很了解
后缀自动机
,请跳过这段://--------------------------------------------------首先,我们要知道
后缀自动机
能够建立一个父指针树。
asdfgh0308
·
2020-07-31 11:44
HDU
后缀自动机
字符串
Codeforces 427D Match & Catch
后缀自动机
或 后缀数组
求出他们最短的一个公共字串P,满足P在S1中只出现1次,P在S2中也只出现一次,输出P最小的长度,如果这样的P不存在,输出-1大致思路:很明显的一个做法是将S1和S2连接起来中间用未出现的字符隔开,然后建立
后缀自动机
Gatevin
·
2020-07-30 01:11
Codeforces
从
后缀自动机
到广义
后缀自动机
——最详细攻略
广义
后缀自动机
前置知识广义
后缀自动机
基于下面的知识点字典树(Trie树)
后缀自动机
请务必对上述两个知识点非常熟悉之后,再来阅读本文,特别是对于
后缀自动机
中的后缀链接能够有一定的理解起源广义
后缀自动机
是由刘研绎在其
NaruseShiroha
·
2020-07-29 20:21
#
字符串
ACM
2018年暑假 纪中培训总结
虽然算是很贵,但是普及到了很多算法,比如什么主席数,AC自动机,
后缀自动机
,仙人掌,圆方树,树套树,TarjanTarjan。而且这里的机房和校园都环境很好,机房很整洁,校园环境就更没的
SSL_ZYC
·
2020-07-29 16:35
后缀自动机
SAM
定义SAM是DFA确定性有限状态自动机,是一张DAG有向无环图。结点为状态,边被为状态间的转移。图存在一个虚拟结点SSS,称作初始状态,其它各结点均可从SSS出发到达。每个转移都标有一些字母。从一个结点出发的所有转移均不同。从一个状态出发的转移标有的字母不同。存在一个或多个终止状态。如果从初始状态SSS出发,最终转移到了一个终止状态,则路径上的所有转移连接起来一定是字符串sss的一个后缀。反之ss
ylxmf2005
·
2020-07-29 05:03
后缀自动机
SAM
2018纪中暑期15天&期末考试 总结
前言比赛、吃饭与FBI学习算法
后缀自动机
后缀数组zkw费用流AC自动机圆方树Tarjan(复习,补充概念)树形DP(复习)比赛概况个人:总体来说还好吧,成绩起落相比上一次变小了,成绩相对稳定,一般徘徊在本校同年级
ssl_xxy
·
2020-07-29 01:56
总结
OI生涯
后缀自动机
——Boring counting
题解:统计每个子串的最右位置和最左位置,在这个区间(左闭右开)里我们一定能够保证我们每个子串出现了2次。#includeusingnamespacestd;constintmaxn=2e5+10;constintmaxc=27;typedeflonglongll;structSuffix_Automaton{intnext[maxn=1;i--){//按拓扑序遍历inte=b[i];endpos[
行走天涯的豆沙包
·
2020-07-28 21:28
后缀自动机
后缀自动机
——Substrings
题解:让我们找长度为x的子串出现的最大次数。我们先建立sam,然后把节点top序。我们知道endpos是一些出现相同次数和相同结束位置的集合。所以我们定义fif_ifi为长度为i的子串出现的最大次数。我们因为知道长度fi>=fjf_i>=f_jfi>=fj,iusingnamespacestd;constintmaxn=2e5+5e4+10;constintmaxc=27;typedeflongl
行走天涯的豆沙包
·
2020-07-28 21:27
后缀自动机
后缀自动机
——Lexicographical Substring Search
题解:对串建立
后缀自动机
过后,top排序之后,计算每种状态有多少种转移的可能。然后和主席数找第k大的方法一样。
行走天涯的豆沙包
·
2020-07-28 21:27
后缀自动机
后缀自动机
——Longest Common Substring II
题解:上一个题是两个串的最长公共子串长度。这道题是多个串来求最长公共子串长度。我们记录匹配到每个状态的时候,到这个状态匹配的最大长度是多少。最后按照top序找最大的最小值。收获了一个sam的板子。#includeusingnamespacestd;constintmaxn=1e5+10;constintmaxc=27;typedeflonglongll;structSuffix_Automaton
行走天涯的豆沙包
·
2020-07-28 21:27
后缀自动机
GDOI 2018游记
这是一篇超级致远星把思绪带回两年前的夏天吧Day-x周末日常到高中部训练中间有一次,老师让我们初一的打了场模拟赛然后我打了全校的rk6发现很多比我大的在我下面,没切掉那个
后缀自动机
裸题很开心,想起了GDKOI2017
ezoilearner
·
2020-07-27 21:54
游记
【题解】【LOJ2102】「TJOI2015」弦论
题目链接点击打开链接题目解法
后缀自动机
入门题。建立
后缀自动机
。求第\(k\)大可以考虑按位确定。把
后缀自动机
当成一个trie树看,每次类似于平衡树上查找第k大的方式查找即可。总结没啥。
Petrichor_YR
·
2020-07-20 14:00
【学习笔记】
后缀自动机
复习
以前学的
后缀自动机
全都忘光了...这篇文章是笔者复习时写的,记录了一些比较要点的概念与构建步骤和部分原理及性质。还可以帮你快速记忆
后缀自动机
的步骤。
Petrichor_YR
·
2020-07-19 00:00
总结[1.4~1.18]
下面总结一下知识点:数据结构相关树链剖分,树分治,树分块
后缀自动机
(SAM)数学相关GCD相关,莫比乌斯反演快速傅里叶变换(FFT),快速沃尔什变换(FWT),牛顿迭代法(NTT)Lucas定理,生成函数数学概率与期望数论相关大步小步算法
__Horizon__
·
2020-07-15 17:58
【字符串数据结构后缀系列Part2】
后缀自动机
学习笔记
由SA到SAM无疑是一个难度极大的跨越.听说SAM非常厉害可以线性构造SA再也不需要O(nlogn)的倍增构造SA(虽然由于常数速度和O(nlogn)并没有太大区别233)简直太神啦有木有>wω__lenp+1.这时,q表示的串里长度不超过lenp+1的right都会增加一个元素,其他串则不会,这就导致q状态对应的所有串的right集合不同,因此新建状态nq(注意与np区分开),令nq表示q代表的
CreationAugust
·
2020-07-15 17:22
随便搞搞
后缀数组&&
后缀自动机
小结
后缀数组板子#include#include#include#include#includeusingnamespacestd;intn;constintN=1000010;intsa[N],x[N],c[N],y[N];chars[N];inlinevoidSA(){for(inti=1;in-k;i--)y[++p]=i;for(inti=1;ik)y[++p]=sa[i]-k;for(int
黑猫black
·
2020-07-15 12:55
字符串
「SDOI2016」生成魔咒【
后缀自动机
link树讲解】
题目链接题意:每放入一个点,求此时的已经生成的串中有多少个不同的子串。思路:我们可以利用SAM的和来做,众所周知,,我们想知道最终形成的串中有多少个完全不同的子串,肯定是SAM的1~size的所有的点的之和。但是,这道题是求的是插入到当前情况的时候的不同的子串的个数,那么我们还是可以类似这么做。我们可以用当前点的来累加这个贡献,为什么呢?如果不生成一个clone的节点,那么它的正确性无容置疑;但是
Andres_Lionel
·
2020-07-14 20:20
后缀自动机
CTSC2012 熟悉的文章
每个询问以字符串的形式给出对于每个询问给出的字符串,可以将其进行分割,使得其子串是某个模板串的子串同时有一个标量\(p\)为分割方案中最小的子串的长度求所有方案中的\(p_{max}\)Solution求子串的方法就是
后缀自动机
言似缥缈
·
2020-07-12 20:00
[P6139] 【模板】广义
后缀自动机
- 广义SAM
Description给定\(n\)个由小写字母组成的字符串\(s_1,s_2\ldotss_n\),求本质不同的子串个数。(不包含空串)Solution每个串插入完后将SAM指回\(root\),这样建立广义SAM还是不够的,需要一些奇怪的特判(见代码中//!部分)(具体分析先鸽了)答案就是\(\sum(maxlen[i]-minlen[i]+1)\)#includeusingnamespace
Mollnn
·
2020-07-12 17:00
[BJWC2010] 外星联络 -
后缀自动机
Description求一个字符串中出现次数大于\(1\)的所有子串的出现次数(按子串的字典序排序)。Solution建出SAM后DFS一遍,每走到一个结点,如果它的\(endpos\)集合大小\(>1\)就输出它#includeusingnamespacestd;constintN=2000005;structSAM{intlen[N],ch[N][26],fa[N],ind,last;intt
Mollnn
·
2020-07-12 09:00
【学习笔记】后缀数组和
后缀自动机
后缀数组(后缀排序)SuffixArray惯例:直接放题【模板】后缀排序学习来源link先口胡一下我对这玩意的理解吧后缀是和前缀类似的东西,学后缀的一般都学过前缀,至少是前缀和呀啥的但是一般后缀会针对字符串上的操作,就像这个题里面“把字符串的所有非空后缀按字典序从小到大排序”后缀排序就是构建后缀数组的过程(就是把后缀排个序,拍完序的数组就叫后缀数组)后缀排序的实现主要依靠倍增法和基数排序来实现定义
言似缥缈
·
2020-07-12 09:00
Codeforces 666E Forensic Examination
有一串原字符SS,mm个匹配字符串,问S[pl,pr]S[pl,pr]这段字符在,编号在[l,r][l,r]之间的字符串中出现次数最多的是哪一个,出现了多少次(最大次数相同则输出编号较小的)不完整理解+解法(
后缀自动机
南开大微笑
·
2020-07-11 18:33
CodeForces
字符串
数据结构
[BZOJ2119] 股市的预测 -
后缀自动机
,ST表求LCA
Description给你一个长度为\(n\)的数组\(a[]\),在差分数组里面找\(ABA\)的形式,这里\(B\)的长度要求为\(m\),找这样的连续段的个数。Solution枚举每种\(A\)长度\(i\),则每隔\(i\)设置一个关键点,在这些关键点上求出LCS和LCP,则我们会得到一段合法的区间于是我们得到这段这个关键点对答案的贡献为\(lenlcp+lenlcs-i\)由于在\(le
Mollnn
·
2020-07-11 15:00
字符串总结之
后缀自动机
本文转自https://blog.csdn.net/qq_35649707/article/details/66473069因为自己写不出这么好的
后缀自动机
的博客,于是开始寻找好的博客,然后我就找到了这样的一篇
oldxmtang
·
2020-07-11 14:19
字符串
字符串
成都
后缀自动机
[Usaco10Dec] Threatening Letter G -
后缀自动机
,贪心
Description给你一个长度为\(n\)的串\(s_1\),再给你一个长度为\(m\)的串\(s_2\),问需要至少多少个\(s_1\)的子串才可以拼成\(s_2\)?Solution对\(s_1\)建出SAM,把\(s_2\)放到上面贪心地跑,如果能匹配就接着沿着\(trans\)边走,不匹配则回到根结点,并且\(ans+1\)#includeusingnamespacestd;const
Mollnn
·
2020-07-11 12:00
[Usaco2006 Dec] Milk Patterns 产奶的模式 -
后缀自动机
Description给定一个数字串\(S\),求出现了\(k\)次的子串的最大长度。Solution考虑基于std::map的SAM出现\(k\)次的条件就是要求\(endpos\)集合的大小\(\gek\)于是我们在满足这个条件的所有节点的\(len\)中取最大即可#includeusingnamespacestd;constintN=200005;structSAM{intlen[N],fa
Mollnn
·
2020-07-11 11:00
[BZOJ1398] 寻找主人 Necklace -
后缀自动机
,最小表示法
Description给定两个串\(S,T\),判断它们是否循环同构,如果是则输出它的最小循环表示。Solution考虑把两个串的最小循环表示都算出来,然后判断它们是否相等把串翻倍建SAM,然后贪心地走最小转移边\(len\)次即可(强行缩了一些内存结果居然混过去了#includeusingnamespacestd;constintMaxn=4000005;#definereset(x)memse
Mollnn
·
2020-07-11 11:00
[BZOJ1396] 识别子串 -
后缀自动机
,线段树
Description问字符串\(S\)每一位的最短识别子串是多长(识别子串指包含这个字符且只出现在\(S\)中一次的子串)。Solution首先建出SAM,由于我们要求出现次数为\(1\),只有\(endpos\)集合大小为\(1\)的那些结点有贡献满足这个条件的结点所表示的串的集合一定是\([i,pos]\),其中\(pos\)为定值,\(i\in[pos-maxlen+1,pos-minle
Mollnn
·
2020-07-11 10:00
[BZOJ2555] SubString - SAM,LCT维护子树信息
SolutionLCT维护
后缀自动机
,询问的就是后缀树的子树大小于是我们暴力维护子树大小调了大半天,最后终于用一个非常tricky的办法把它搞定了首先这是因为我之前写的维护子树和都是假的(实际上只对整个连通块保持正确性
Mollnn
·
2020-07-09 16:00
[HAOI2016]找相同字符
\(n,m\le2\times10^5\)Solution\(yyt\)的题,考试时并不会
后缀自动机
,于是只能对一个串把所有后缀插入\(AC\)自动机,另一个串在上面跑,每次到一个节点就暴力跳\(fail
weixin_30580943
·
2020-07-08 14:12
SPOJ-LCS
后缀自动机
题目求字符串s,p的lcs将s加入sam中遍历p,当前字符u初始结点v=1,长度len=0;如果该结点有u的出边,匹配,++len否则通过fa回跳到能匹配的位置。如果一个也不能匹配,v=1,len=0板子#include#include#include#includeusingnamespacestd;typedeflonglongll;constintN=2e5+5e4+10;structSAM
DATELOST
·
2020-07-08 11:31
spoj
ACM_字符串
鬼东西
fft点分治李超线段树cdq分治后缀数组分块大发多项式除法,求逆,提答构造
后缀自动机
https://blog.csdn.net/clover_hxy/article/details/68059043硬币
wspl654321
·
2020-07-07 23:18
2018
【十二省联考2019】【LOJ3049】【洛谷P5248】【BZOJ5496】字符串问题(SAM优化建图)(拓扑排序)
建立反串
后缀自动机
,那么前缀关系就转化成了后缀。树上倍增找到每个串的对应节点,用一个vector存下来。将SAM上每个节点拆
zxyoi_dreamer
·
2020-07-06 14:10
拓扑排序
后缀自动机SAM
ACM-字符串完全总结(知识点+模板)
HashKMP4.1普通KMP4.2扩展KMPTrie(字典树)5.1字典树5.101字典树自动机6.1AC自动机6.2AC自动机上的动态规划6.3回文自动机(回文树)后缀数组7.1后缀数组的常见用法
后缀自动机
Ogmx
·
2020-07-06 04:54
ACM常用模板
算法完全解析
gdoi2017
大水题一道裸的kmp但是我把记录长度的int数组开成了char类型正解变爆零心态爆炸.........后面的第二题两千字题目以及五千字附加故事(我是没有去看,据说全都a完了才能去看)看不懂没写第三题广义
后缀自动机
结果我想着
weixin_34355559
·
2020-07-06 01:30
20200704联考T2 B
题目描述:分析:建立
后缀自动机
,对于同一节点上的子串,由于endpos集合相同,覆盖的大小必定随长度的增加单调不降维护endpos集合相邻两个位置的距离,二分+线段树可以快速算出长度为\(mid\)的子串覆盖的大小在后缀树上从下往上合并
Darknesses
·
2020-07-05 22:00
HDU 6583 Typewriter(
后缀自动机
)
Typewrite\[TimeLimit:1500ms\quadMemoryLimit:262144kB\]题意给出一个字符串\(s\),现在你需要构造出这个字符串,你每次可以花费\(q\)在末尾加上任意一个字符或者花费\(p\)复制任意一段已经构造出来的子串到末尾,问最少需要花费多少。思路令\(dp[i]\)表示构造到第\(i\)位最少花费多少。第一种情况,直接花费\(q\)添加在末尾,\(dp
weixin_30262255
·
2020-07-05 20:02
ACM中常用算法----字符串
ACM中常用算法—-字符串ACM中常用的字符串算法不多,主要有以下几种:Hash字典树KMPAC自动机manacher后缀数组EX_KMPSAM(
后缀自动机
)回文串自动机下面来分别介绍一下:0.Hash
码代码的猿猿的AC之路
·
2020-07-05 17:39
我的AC之路
【cf666e Forensic Examination】(
后缀自动机
+线段树合并)
这个题应该用
后缀自动机
或者后缀树来做。这样问题就是子树众数,就可以用线段树合并一个log搞定。
broxin
·
2020-07-05 16:00
题解
字符串
线段树
利用后缀数组构造后缀树
前段时间学后缀数组的时候上网查相关资料,看到说后缀数组和后缀树是可以相互转化的,并且uoj上有大量通过
后缀自动机
建出后缀树然后dfs遍历获得后缀数组的模板,但是通过后缀数组来建后缀树的资料确实稀缺。
broxin
·
2020-07-05 16:00
学习日志
字符串
BZOJ 2806 Luogu P4022 [CTSC2012]Cheat (广义
后缀自动机
、DP、二分、单调队列)
题目链接:(bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=2806(luogu)https://www.luogu.org/problemnew/show/P4022题解:对“作文库”中的串建广义SAM。(感觉加个#拼在一起直接SAM也行啊,只是常数大了点,但是大家都写的广义SAM我也就跟着写广义SAM了233333)询问时二分\(L\
suncongbo
·
2020-07-05 13:07
[BZOJ2555] [TJOI2015]弦论 &&
后缀自动机
本来以为是一个多么神的题弦论多么高大上结果居然是
后缀自动机
的统计水水的#include#include#include#include#include#defineSFscanf#definePFprintf
大蒟蒻syk
·
2020-07-05 12:47
后缀自动机
BZOJ
2020.6月做题记录
长期计划SAM专题date:2020.05.21-2020.06.01基础类:ProblemFinishedP3804【模板】
后缀自动机
(SAM)√√√SP1811LCS-LongestCommonSubstring
C20190406Panda_hu
·
2020-07-05 05:14
赛前冲刺
【
后缀自动机
】Hihocoder#1449 :
后缀自动机
三·重复旋律6
分析:
后缀自动机
板子题。维护endpos集合大小。
616156
·
2020-07-05 05:43
后缀自动机
字符串
洛谷 P4770 [NOI2018]你的名字(
后缀自动机
+线段树合并)
题目链接emmm,这题其实也不是特别难,个人感觉比之前做过的两道线段树合并right的
后缀自动机
都要简单不少(另两道都至少长2k……首先考虑一下询问区间就是整串的情况我们先对长串S建SAM然后把询问串T
Philosophiofantasia
·
2020-07-05 03:44
洛谷
后缀自动机
线段树合并
2018 EC-final J Philosophical … Balance (
后缀自动机
+树型DP+纳什均衡)
题目链接好的吧,我并不知道纳什均衡是什么反正遥遥领先跟我说这题姑且可以把纳什均衡理解成每个子树分配的比例乘以权值都相等查询的是lcp那么就先把后缀树建出来,然后每个后缀就是np类节点,每两个np节点之间的lca的len就是lcp考虑树型DPdp[i]表示第i个点的所有子树平分1产生的最小值这个点是np类节点,那么显然这个点直接赋成他的len返回就可以了,因为肯定给这个点直接赋1是最优的不是的话,就
Philosophiofantasia
·
2020-07-05 03:43
ACM
后缀自动机
树型DP
纳什均衡
BZOJ3998 [TJOI2015]弦论(
后缀自动机
求字典序第k小子串)
题目链接先考虑相同子串算不同的情况性质一:
后缀自动机
中parent树中一个节点子树中np类节点的个数为该串在原串中出现的次数根据这个性质可以通过一遍parent树上的dfs求出每个点的出现次数
后缀自动机
里每个节点代表的串是多个的
Philosophiofantasia
·
2020-07-05 03:43
后缀自动机
bzoj
4556: [Tjoi2016&Heoi2016]字符串
字符串题不会做先想能不能把字符串反过来把字符串反序,建立
后缀自动机
,利用线段树合并算出每个位置的right集二分答案,用树上倍增找到对应的节点,看是否有[a+mid-1,b]中的数在right集中#include
heheda_is_an_OIer
·
2020-07-04 17:45
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他