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
——后缀数组
[JZOJ5084]子串
1≤n≤500000题目分析对s构造
后缀数组
,然后考虑从大到小枚举LCP的长度,然后每次答案加上LCP长度大于等于该值的子串个数。
a_crazy_czy
·
2017-04-24 17:00
后缀数组
OI
[BZOJ4199][NOI2015]品酒大会
后缀数组
像这种“r相似”的题目是一种套路,搞出SA之后按height数组合并集合。统计答案的时候注意细节代码:typenode=recordt,id:int64;end;constmaxn=300100;maxl=-1000000000;varn,i,j,p,q:longint;max,min,size:array[0..maxn]ofint64;s:ansistring;a,rank,sa,x,y,bu
DOFYPXY
·
2017-04-18 21:30
后缀数组
【jzoj5052】【旅游路线】【
后缀数组
】
题目大意A君准备在Z国进行一次旅行,Z国中有n个城市,城市从1到n进行编号,其中1号城市为Z国首都。Z国的旅行交通网由n-1条单向道路构成,并且从任何一个城市出发都可以通过旅行网到达首都。一条旅行交通网中的旅行线路,可以用线路上所经过的城市来描述,如{v1,v2,v3,……,vm},它表示一条经过了m个城市的旅行路线,且城市vi到城市vi+1有一条单向道路相连。两个城市是相似的,当且仅当他们所连接
inklutcuah
·
2017-04-14 15:01
jzoj
字符串
The Week Code - Issue #1
本周推送的五题具体知识点如下:hash+
后缀数组
链表
coderpai
·
2017-04-11 11:29
acm
ACM
后缀自动机的性质应用
两个串的最长公共子串这个问题可以用DP来解决,也可以用
后缀数组
。
clover_hxy
·
2017-03-29 09:41
后缀自动机
bzoj 3796: Mushroom追妹纸 (
后缀数组
+KMP+二分)
还是好好想
后缀数组
的做法吧。这道题最恶心的限制就是限制3:s3不是w的子串。那么如果没有这个限制该怎么做呢?我们用间隔符连接s1,s2,用
后缀数组
求出height数组。
clover_hxy
·
2017-03-28 16:21
字符串处理
后缀数组
KMP
[BZOJ3796]Mushroom追妹纸(hash+
后缀数组
+二分)
题目描述传送门题解把s1和s2接在一起,中间加一个分隔符预处理出s3在s1和s2中的哪些位置出现过(hash)求出sa和height,容易知道答案一定在相邻的两个在不同串里的后缀中产生对于每一对相邻的后缀,二分一下满足条件的最大长度,即没有出现s3(前缀和)时间复杂度O(nlogn)代码#include#include#include#include#includeusingnamespacest
Clove_unique
·
2017-03-28 16:22
题解
hash
后缀数组
二分
SA(
后缀数组
)——倍增法模板
倍增法原理:一步一步把n个后缀按照它们的前2^k的字符排序。当我们求出按前2^k个字符排序的顺序时,对于按照前2^(k+1)个字符的排序,可以把它拆成前后两个2^k个字符部分,由于它们的顺序我们是知道的,于是打一个二维桶排即可。Height_i表示排名第i位的后缀和排名第i-1位的后缀的最长公共前缀。Height性质:Height_rank[j]>=Height_rank[j-1]-1P.S:可以
Cold_Chair
·
2017-03-17 21:34
模版
Suffix
array
后缀数组
_不相同的子串的个数
给定一个字符串,求不相同的子串的个数。算法分析:每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数。如果所有的后缀按照suffix(sa[1]),suffix(sa[2]),suffix(sa[3]),......,suffix(sa[n])的顺序计算,不难发现,对于每一次新加进来的后缀suffix(sa[k]),它将产生n-sa[k]+1个新的前缀。但是其中有hei
Gitfan
·
2017-03-11 15:09
后缀数组
http://uoj.ac/problem/35#include#include#include#definemaxn100005usingnamespacestd;chars[maxn];intsa[maxn],t[maxn],t2[maxn],c[maxn],Rank[maxn],height[maxn],n;voidbuild_sa(intm){inti,*x=t,*y=t2,*T,p;n+
Gitfan
·
2017-03-10 10:52
POJ 2217
我的第一想法就是二分子串的长度,开始想用哈希搞一搞,后来发现还是还是
后缀数组
扎实。
Andymion
·
2017-03-08 18:28
字符串
Manacher算法详解
算法详解RT,Manacher算法今天第一次写,有不少细节,也容易写错,下面进行一个小小的总结原理首先,我们应该已经看到过很多有关回文串的题目了,当我们不会Manacher的时候,我们往往是用回文自动机
后缀数组
代替的
Renatus_Goseqh
·
2017-03-03 15:14
Manacher
[BZOJ4310]跳蚤
后缀数组
+线段树
一个log的题被我强行写成了两个log诶再怎么样过了就是了构建SA,然后二分答案,贪心判断至少要剪断多少次才能使得答案成为最大的/**************************************************************Problem:4310User:di4CoveRyLanguage:C++Result:AcceptedTime:12576msMemory:1
HbFS-
·
2017-03-03 08:46
后缀数组
[BZOJ4199][Noi2015]品酒大会(
后缀数组
+并查集)
题目描述传送门题解别出心裁的一道sa,想了好久。。40ptsO(n2)的做法应该很好想吧sa+st表就可以了qwq100pts首先求出height数组考虑如果只求一个r的话怎么做显然可以将height数组分组,每个组里都是height>=r的,然后对于每一个组计数+取max那么如果有多个r呢?显然r大的要比r小的分的组少一些换句话说就是如果已经将r分组,再将r-1分组的时候,可以往上一次分的组里插
Clove_unique
·
2017-02-16 11:34
题解
并查集
NOI
后缀数组
POJ 2406(连续重复子串)
解题思路:法一:-可以使用
后缀数组
解决。-想法非常简单,就是穷举字符串S的长度k,然后判断是否满足。
nixinyis
·
2017-02-03 11:43
POJ的代码
后缀数组
&
后缀自动机
KMP匹配
正则引擎在数据包匹配中的工程分析
Boyer-Moore、Horspool、Sunday算法都是基于
后缀数组
的匹配算法,区别在于移动的方式不一样。MP是前缀匹配算法,R算法是hash匹配,AC自动机可以同时匹配多个pattern。
broler
·
2017-01-22 10:48
编程语言
bzoj 2251: [2010Beijing Wc]外星联络 (
后缀数组
)
2251:[2010BeijingWc]外星联络TimeLimit:30SecMemoryLimit:256MBSubmit:769Solved:459[Submit][Status][Discuss]Description小P在看过电影《超时空接触》(Contact)之后被深深的打动,决心致力于寻找外星人的事业。于是,他每天晚上都爬在屋顶上试图用自己的收音机收听外星人发来的信息。虽然他收听到的仅
clover_hxy
·
2016-12-29 20:01
后缀数组
后缀数组
学习笔记
后缀数组
定义搞懂定义是学习
后缀数组
的关键。子串:字符串S的子串r[i..j],i≤j,表示r串中从i到j这一段,就是顺次排列r[i],r[i+1],…,r[j]形成的字符串。
Clove_unique
·
2016-12-29 07:27
学习笔记
后缀数组
UOJ #35 后缀排序(
后缀数组
)
题目链接题解:
后缀数组
板子之前学
后缀数组
只是学了个大概,而且写的是二维的。现在从头理一遍,改成了算法导论上的写法。。
clover_hxy
·
2016-12-28 10:47
后缀数组
[BZOJ3238][Ahoi2013]差异(
后缀数组
+单调栈||后缀自动机+树形dp)
题目描述传送门题解这道题实际上还是非常有趣的。首先根据题目的描述答案应该为所有后缀的组合长度再减去两两的lcp首先算出来总和求出sa和height,用两次单调栈可以求出来以某一个点的height为最小值的最长区间可以发现以这个点为分界点,区间的左右两边两两组合最小值一定是当前点的height,也就是lcp的长度然后再计算答案就可以了然后这道题还有后缀自动机的做法因为是lcp,所以反过来建立后缀自动
Clove_unique
·
2016-12-28 10:50
题解
dp
省选
单调栈
后缀数组
后缀自动机
[BZOJ2251][2010Beijing Wc]外星联络(
后缀数组
)
题目描述传送门题解首先求出来sa和height然后其实就是暴力计算一下每一个后缀向后延伸多远。注意要去掉重复的,也就是说要从每一个最长的那个后缀开始,并且对于每一个后缀,要从大到小合并。时间复杂度O(nlogn+n2)代码#include#include#includeusingnamespacestd;#defineN3005chars[N];intn,m;int*x,*y,X[N],Y[N],
Clove_unique
·
2016-12-28 09:24
题解
后缀数组
[POJ1226]Substrings(
后缀数组
+二分)
只需要先将每个字符串都反过来写一遍,中间用一个互不相同的且没有出现在字符串中的字符隔开,再将n个字符串全部连起来,中间也是用一个互不相同的且没有出现在字符串中的字符隔开,求
后缀数组
。
Clove_unique
·
2016-12-27 23:21
题解
后缀数组
二分
[SPOJ220]PHRASES - Relevant Phrases of Annihilation(
后缀数组
+二分)
题解先将n个字符串连起来,中间用不相同的且没有出现在字符串中的字符隔开,求
后缀数组
。然后二分答案,再将后缀分组。
Clove_unique
·
2016-12-27 22:26
题解
后缀数组
二分
[POJ3415]Common Substrings(
后缀数组
+单调栈)
题目描述传送门题意:给定两个字符串A和B,求长度不小于k的公共子串的个数(可以相同)。题解首先把一个串接在另一个串的后面,中间放一个没出现过的字符。由于每一个子串都是某一个后缀的前缀,求出sa和height了之后,我们可以将height分组,组内都是height>=k的后缀。可以知道长度不小于k的公共子串是两个后缀的前缀,并且它们一定在同一组内。那么对于每一组,从前往后扫,假设遇到了A的后缀,那么
Clove_unique
·
2016-12-26 21:13
题解
单调栈
后缀数组
算法 KMP
恩,学完
后缀数组
,干脆想把AC自动机也给学了,然后发现貌似需要KMP的基础,于是打算顺便复习一下,顺便写个博客,增加下浏览量。
嘉庆帝
·
2016-12-03 14:01
算法
KMP
字符串
C++
后缀数组
详解
C++
后缀数组
详解嗯,
后缀数组
非常难讲,我对自己一点信心都没有TuT,各位神犇们如果有什么问题的话请评论教导蒟蒻。
_Mocha_
·
2016-12-02 14:54
算法笔记
后缀排序(
后缀数组
模板题)
测试一下模板#include#includeusingnamespacestd;constintmaxn=2e5+10;structSuffix{intr[maxn];intsa[maxn],rank[maxn],height[maxn];intt[maxn],t2[maxn],c[maxn],n,m;voidinit(strings){n=s.size();for(inti=0;i=0;i--)
Griffin_0
·
2016-11-06 16:47
后缀数组
HDOJ 5769 Substring
思路如果不考虑包含x字符的话,求不同子串个数是一个
后缀数组
经典问题(spoj694)。
Winterfell30
·
2016-10-25 21:06
HDOJ
后缀数组
HDOJ 5769 Substring
思路如果不考虑包含x字符的话,求不同子串个数是一个
后缀数组
经典问题(spoj694)。
Winterfell30
·
2016-10-25 21:06
HDOJ
后缀数组
ACM 所有算法
,队列,链表哈希表,哈希数组堆,优先队列双端队列可并堆左偏堆二叉查找树Treap伸展树并查集集合计数问题二分图的识别平衡二叉树二叉排序树线段树一维线段树二维线段树树状数组一维树状数组N维树状数组字典树
后缀数组
Tabris_
·
2016-10-24 22:16
4199: [Noi2015]品酒大会
(百度有hhh)这看上去就很
后缀数组
啊。。先处理出
后缀数组
(都快忘了咋整了)。。
CRZbulabula
·
2016-10-17 20:01
单调队列
后缀数组
EOJ1805 POJ2217 最长公共子串(
后缀数组
+高度数组)
EOJ1805上字符串的长度超过5万,
后缀数组
来解决此题不会超时,甚至可以说是解决此题的唯一算法。
Datow
·
2016-09-16 14:52
EOJ
后缀数组
POJ
字符串算法小结
hashkmp和ac自动机
后缀数组
,后缀自动机,后缀树扩展kmpmanacher算法回文自动机可删改的ac自动机不看复杂度乱搞hashhash就是把字符串每一位乘以一个阶,用于快速判断字符串是否相等。
bplusb
·
2016-09-07 01:56
后缀数组
(三)求给定字符串不相同的子串个数(hdu 4622 区间询问)
如果字符串是给定的,不询问区间,按照论文里写的,由于每个子串一定是某个后缀的前缀,相当于就是求后缀之间不相同前缀的个数。每次新加进来一个后缀,就是加上(n-sa[i]+1)个新前缀,但是其中有height[i]个前面已经算过了,减掉即可。这题询问的是一个区间[l,r],一开始的思路是,对于每一个sa[i]在l到r之间的后缀,按前面那种方法计算,同时注意考虑一下lcp的右边超过了r的情况,过了样例交
mtxxxx
·
2016-08-28 16:12
hdu
字符串
后缀数组
(二)利用height对sa数组分组的做法(poj 1743 & poj 3261 )
poj1743给定一个字符串,求最长重复子串,且这两个子串不重叠二分答案,判断答案k是否可行时,把
后缀数组
分成若干组,每组中重复子串的长度都大于或等于k(即height大于等于k),如果本组中sa的最大最小值之差大于
mtxxxx
·
2016-08-28 08:33
poj
字符串
后缀数组
(一)(模板题poj2774)
#include#include#includeusingnamespacestd;constintmaxn=200010;charss[maxn];intsa[maxn],t[maxn],t2[maxn],c[maxn],n,s[maxn];intRank[maxn],height[maxn];voidget_sa(intm){inti,*x=t,*y=t2;for(i=0;i=0;i--)sa
mtxxxx
·
2016-08-27 08:53
poj
字符串
后缀自动机学习小记
简介后缀三姐妹:
后缀数组
,后缀自动机,后缀树。后缀自动机:SuffixAutomation,也叫SAM。创立算法的思路来源:能不能构出一个自动机(本质就是一个有向图),能识别一个串的所有后缀。
Facico
·
2016-08-18 22:24
小记
后缀自动机
算法小记
bzoj 2119: 股市的预测 (
后缀数组
+差分+st表)
2119:股市的预测TimeLimit:10SecMemoryLimit:259MBSubmit:283Solved:135[Submit][Status][Discuss]Description墨墨的妈妈热爱炒股,她要求墨墨为她编写一个软件,预测某只股票未来的走势。股票折线图是研究股票的必备工具,它通过一张时间与股票的价位的函数图像清晰地展示了股票的走势情况。经过长时间的观测,墨墨发现很多股票都
clover_hxy
·
2016-08-16 23:42
字符串处理
后缀数组
[BZOJ2119]股市的预测(
后缀数组
+st表)
题目描述传送门题解将高度差分、离散之后,问题可以转化为:一个长度为n-1的序列,求有多少子串满足ABA的形式,并且满足|A|>0,|B|=m。于是我们可以枚举A的长度j,然后将整个序列分块,每块的大小为j,每块的关键点为块首的点。枚举每一个关键点i,取左右端点l=i,r=i+j+m,求出子串[l,n]和[r,n]的lcp,以及子串[1,l]和[1,r]的lcs,即从lr这两个点最多能向左和向右扩展
Clove_unique
·
2016-08-16 22:29
题解
st表
后缀数组
【GDOI2017模拟8.11】矩阵
后缀数组
+哈希表
用
后缀数组
来求子串种数。时间复杂度:O(n^3log^2n)代码:#include #include #include #includ
qq_33229466
·
2016-08-16 17:00
hdoj 5442 Favorite Donut 【KMP最大表示法
后缀数组
】
其实可以用
后缀数组
,我们先copy串,然后
笑着走完自己的路
·
2016-08-11 20:46
KMP
后缀数组
2016多校第四场 HDU5769
为了方便去重,这道题可以先用
后缀数组
处理出来sa,height数组。然后从字典序小的开始往大的找。
CQU_HYX
·
2016-07-29 14:00
数据结构
BZOJ 2251
我用的
后缀数组
,网上也有用Trie,因为此题的输出本来就是n2级别的,所以理论最优时间复杂度就是n2看到很多小伙伴建完
后缀数组
后就ST标+二分暴力。
Fuxey
·
2016-07-18 20:02
后缀数组
递推
【APIO2016】字符串匹配
然后脑抽打了个
后缀数组
加KMP(其实只用KMP就好了),然后打的又臭又长,最后还爆零了。我的KMP尽然从1开始搜!!!!!
Facico
·
2016-07-14 08:41
字符串
kmp
后缀数组
字符串匹配——KMP算法
最大相同前缀
后缀数组
写法先根据前缀后缀,求出前缀数组prefix,再通过前缀数组,快速迭代扫描主串,并找到首次匹配的位置,找不到则返回-1。前缀数组prefix的求法将prefix[0]初始化为0,设
q547550831
·
2016-07-05 22:00
算法
字符串匹配
KMP
HDU 3518
后缀数组
点击打开链接题意:给一个字符串,问你有多少个子串重复出现过并且这两个串没有重复的地方思路:数据范围比较小,暴力的
后缀数组
即可,先求出sa和lcp数组,然后枚举这个重复的串的长度,枚举到len/2就可以了
Dan__ge
·
2016-06-20 13:02
数据结构
后缀数组
线段树
HDU 3518
后缀数组
点击打开链接题意:给一个字符串,问你有多少个子串重复出现过并且这两个串没有重复的地方思路:数据范围比较小,暴力的
后缀数组
即可,先求出sa和lcp数组,然后枚举这个重复的串的长度,枚举到len/2就可以了
Dan__ge
·
2016-06-20 13:00
数据结构
ACM
后缀数组
HDU
【JZOJ 4388】 染色
GDOI2015有一道题,也是N≤105,可是标程是O(n2)的,而且是
后缀数组
,常数较大,竟然可以过。。。有一题,N≤500,要跑floyd,但是O(5003)比较玄学,依然能过。回
lyd_7_29
·
2016-06-16 21:00
树链剖分
线段覆盖
HDU 4622
后缀数组
+RMQ
点击打开链接题意:给一个字符串,有q次询问,为你从第L个到第R个字符组成的不同的子串的数量思路:做过好多这种提问的了,减去的数量就是lcp[i]的值,不过这个是一个区间内的操作,正解是后缀自动机,然而还没学~~~,发现对于n*q*log应该没什么问题,就写了写,对于询问的这个区间,我一开始写的是跑sa数组,如果sa[i]在L和R区间内,那么加进去,与下一个在这个区间的sa进行RMQ查询最长公共前缀
Dan__ge
·
2016-06-12 19:12
数据结构
RMQ
后缀数组
线段树
HDU 4622
后缀数组
+RMQ
点击打开链接题意:给一个字符串,有q次询问,为你从第L个到第R个字符组成的不同的子串的数量思路:做过好多这种提问的了,减去的数量就是lcp[i]的值,不过这个是一个区间内的操作,正解是后缀自动机,然而还没学~~~,发现对于n*q*log应该没什么问题,就写了写,对于询问的这个区间,我一开始写的是跑sa数组,如果sa[i]在L和R区间内,那么加进去,与下一个在这个区间的sa进行RMQ查询最长公共前缀
Dan__ge
·
2016-06-12 19:00
ACM
后缀数组
HDU
RMQ
上一页
9
10
11
12
13
14
15
16
下一页
按字母分类:
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
其他