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
ACM-后缀数组
hdu 2459
后缀数组
求最多重复次数子串
#include #include #include #include usingnamespacestd; constintN=100005; intws[N],wv[N],wa[N],wb[N]; intRank[N],height[N],sa[N],l; chars[N],xiao; intdp[N][25]; intcmp(int*r,inta,intb,intl) { returnr[a
a709743744
·
2016-05-07 09:00
浅谈
后缀数组
1.概述
后缀数组
是一种解决字符串问题的有力工具。相比于后缀树,它更易于实现且占用内存更少。在实际应用中,
后缀数组
经常用于解决字符串有关的复杂问题。本文大部分内容摘自参考资料[1][2]。
qq919017553
·
2016-05-06 21:00
POJ 3581
后缀数组
点击打开链接题意:将一个数列分成连续的三段,每段必须有数字,问这三段反转后的数列的最小字典序的方案,并输出,注意:第一个数比后面所有都大思路:因为第一个数最大,那么将整个数列反转后的字典序最小的后缀为第一段分开位置,但是要判断情况,如最后还要至少剩下两个数完成后两段,接下来找第二段的分开位置,不可以像刚刚那么找了,想这个例子,将第一段去掉后是这样的,1321100如果和第一次一样的方法结果是110
Dan__ge
·
2016-05-06 20:00
数据结构
ACM
poj
后缀数组
POJ 3581
后缀数组
点击打开链接题意:将一个数列分成连续的三段,每段必须有数字,问这三段反转后的数列的最小字典序的方案,并输出,注意:第一个数比后面所有都大思路:因为第一个数最大,那么将整个数列反转后的字典序最小的后缀为第一段分开位置,但是要判断情况,如最后还要至少剩下两个数完成后两段,接下来找第二段的分开位置,不可以像刚刚那么找了,想这个例子,将第一段去掉后是这样的,1321100如果和第一次一样的方法结果是110
Dan__ge
·
2016-05-06 20:00
数据结构
ACM
poj
后缀数组
UVa11107 Lifeform
题目链接UVa11107Lifeform题解学了高大上的
后缀数组
但是还是不怎么会用,关键是版子最开始打错了,害得我必须再重新理解一遍才能找出bug,开始以为是memset(sa,0,sizeof(sa)
QWsin
·
2016-05-06 16:00
HDU 4029 Distinct Sub-matrix(
后缀数组
+hash)
Description给出一个只由大写字母组成的矩阵,求不同子矩阵个数Input第一行一整数T表示用例组数,每组用例第一行为两个整数nn和m表示矩阵行列数,之后为一个只由大写字母组成的n*m矩阵(1 #include #include #include usingnamespacestd; #definemaxn22222 typedefunsignedlonglongull; intt1[max
V5ZSQ
·
2016-05-05 22:00
HDU 4080 Stammering Aliens(
后缀数组
+二分)
Description给出一个字符串,求这个字符串中重复次数不少于m次的最长字串长度以及这个子串在原串中最后一次出现的位置Input多组用例,每组用例第一行为一整数m,第二行为一长度不超过40000的字符串,以m=0结束输入Output输出两个整数,第一个整数为在这个字符串中重复次数不少于m次的最长子串的长度,第二个整数是这个子串在原串中最后一次出现的位置,如果不存在这样的子串则输出noneSam
V5ZSQ
·
2016-05-05 22:00
ACM-
入门经典:函数和递归
例题4-1古老的密码:UVa1339给定两个长度相同且不超过100的字符串,判断可否将其中一个字符串各个字母重拍,然后对26个字母做一个一一映射,使得两个字符串相同。例如:输入JWPUDJSTVP重排后得到WJDUPSJPVT,然后子母映射(B-A,C-B,…Z-Y)可得VICTORIOUS。输入两个字符,输出YES或者NO//UVa1339AncientCipher //RujiaLiu #in
mijian1207mijian
·
2016-05-03 23:00
spoj
后缀数组
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=115232#problem/B求给出字符串所有的不重复子串,可以重叠,所有后缀的所有前缀就包括了所有字符串用总字符串的数去减重复字符串的个数即所有height【】,#include #include #include usingnamespacestd; constintmaxn=100
aonaigayiximasi
·
2016-05-03 21:00
后缀数组
学习
参考《算法入门经典》和http://blog.csdn.net/qq_24451605/article/details/42118325rank:名次数组(后缀i在所有后缀中从小到大排列的名次),(以第k个字符开始的后缀称为后缀k)rank[0…n-1]有效height:height[i]=suffix(sa[i-1])和suffix(sa[i])的最长公共前缀,也就是排名相邻的两个后缀的最长公共
aonaigayiximasi
·
2016-05-03 21:00
HDU 4622 Reincarnation(
后缀数组
+ST)
Description给出一个只由小写字母组成的字符串,有m次查询,每次查询区间[l,r]这一部分子串所含有的不同子串的数量Input第一行为一整数T(T=lb&&lcp>=lb说明pre后缀字典序在i后缀后面,不需要更新pre,否则令pre=i表示i后缀字典序在pre后缀后面(lcp=lcp(sa[i],sa[pre])),(r-l+1)*(r-l+2)/2-sum{min(lcp,min(la
V5ZSQ
·
2016-05-03 15:00
POJ 3693 Maximum repetition substring(
后缀数组
+ST)
Description给出一个字符串,求这个字符串的一个子串,使得其完全由最小循环节组成且循环次数最多,如果有多组解则输出字典序最小的Input多组用例,每组用例占一行为一行长度不超过100000的字符串,以#结束输入Output对于每组用例,输出满足条件的字典序最小的子串SampleInputccabababcdaabbccaa#SampleOutputCase1:abababCase2:aaS
V5ZSQ
·
2016-05-03 15:00
POJ 3581 Sequence(
后缀数组
)
输出这样操作得到的序列中字典序最小的序列Input第一行为一整数n表示序列长度,之后n行每行一个整数表示该序列(n1(因为三部分都需要非空),那么字典序中第i个后缀即为满足条件的第一部分,然后将剩余部分翻倍后再做一遍
后缀数组
V5ZSQ
·
2016-05-03 15:00
CSU 1632 Repeated Substrings(
后缀数组
)
Description求字符串中所有出现至少2次的子串个数Input第一行为一整数T(T #include #include #include #include usingnamespacestd; #definemaxn111111 intt1[maxn],t2[maxn],c[maxn],sa[maxn],Rank[maxn],height[maxn]; boolcmp(int*r,inta,
V5ZSQ
·
2016-05-03 14:00
URAL 1297 Palindrome(
后缀数组
)
Description给出一个字符串,求最长回文子串长度Input一个长度不超过1000的字符串Output输出这个串的最长回文子串,如果有多种满足条件的解则输出首字符靠前的SampleInputThesampletextthatcouldbereadedthesameinbothordersArozaupalanalapuazorASampleOutputArozaupalanalapuazor
V5ZSQ
·
2016-05-03 14:00
CSU 1656 Paper of FlyBrother(
后缀数组
)
Description给出一个串,求这个串的不同子串的数量Input多组用例,每组用例占一行为一长度不超过100000的字符串,以文件尾结束输入Output对于每组用例,输出该串的不同子串的数量SampleInputaaabSampleOutput15Solution不同子串数量=n*(n+1)-sum(height[i]),i=2,3,…,n即子串总数减去重复字串数量,重复子串就是后缀的公共前缀
V5ZSQ
·
2016-05-03 14:00
SPOJ 694 Distinct Substrings(
后缀数组
)
Description给出一个字符串,求这个串不同的子串个数Input第一行为一整数T(T #include #include #include usingnamespacestd; #definemaxn1111 intt1[maxn],t2[maxn],c[maxn],sa[maxn],rank[maxn],height[maxn]; boolcmp(int*r,inta,intb,intl)
V5ZSQ
·
2016-05-03 14:00
POJ 3261 Milk Patterns(
后缀数组
+二分)
Description给出一个字符串,求至少出现k次的可重叠的最长子串的长度Input第一行为两个整数n和k(1 #include #include #include usingnamespacestd; #definemaxn22222 intt1[maxn],t2[maxn],c[maxn],sa[maxn],rank[maxn],height[maxn]; boolcmp(int*r,int
V5ZSQ
·
2016-05-03 14:00
SPOJ 220 Relevant Phrases of Annihilation(
后缀数组
+二分)
Description给定n个字符串,求在每个字符串中至少出现两次且不重叠的最长子串的长度Input第一行为一整数T(T=k则满足条件,如果每组都不满足条件则这个k值不满足条件Code#include #include #include #include usingnamespacestd; #definemaxn111111 #defineINF0x3f3f3f3f intt1[maxn],t2
V5ZSQ
·
2016-05-03 14:00
CSU 1608 Particle Collider(
后缀数组
+二分)
Description给出n个串,求所有满足条件的子串,使得该子串和其反串出现在超过n/2个串中Input多组用例,每组用例第一行为一整数n表示串的数量(n #include #include #include #include usingnamespacestd; #definemaxn222222 intt1[maxn],t2[maxn],c[maxn],sa[maxn],Rank[maxn]
V5ZSQ
·
2016-05-03 14:00
POJ 3294 Life Forms(
后缀数组
+二分)
Description给出n个串,求至少出现在n/2+1个串中的最长公共子串Input多组用例,每组用例第一行为一整数n(1 #include #include #include usingnamespacestd; #definemaxn111111 intt1[maxn],t2[maxn],c[maxn],sa[maxn],rank[maxn],height[maxn]; boolcmp(in
V5ZSQ
·
2016-05-03 13:00
POJ 3415 Common Substrings(
后缀数组
+单调栈)
Description给出两个串a和b,求a和b的长度不小于k的公共子串数量Input多组用例,每组用例第一行为一整数k,之后为两个字符串表示a和b,两个串的串长不超过10^5,k不超过两串串长,以k=0结束输入Output对于每组用例,输出a和b的长度不小于k的公共子串数量SampleInput2aababaaabaabaa1xxxx0SampleOutput225Solution将两串连在一起
V5ZSQ
·
2016-05-03 13:00
POJ 3450 Corporate Identity(
后缀数组
+二分)
Description求n个字符串的最长公共子串长度Input多组用例,每组用例第一行为字符串个数n(2 #include #include #include usingnamespacestd; #definemaxn888888 intt1[maxn],t2[maxn],c[maxn],sa[maxn],rank[maxn],height[maxn]; boolcmp(int*r,inta,i
V5ZSQ
·
2016-05-03 12:00
【BZOJ3654】图样图森破【最长路】【
后缀数组
】【ST表】【回文串】【LCP】
于是我们需要一个快速查询LCP的数据结构,选择
后缀数组
+ST表就可以了。但是这样做复杂度还是比较高,于是我们考虑用图论模型优化。先把单个串是回文串的情况特判掉。对每
BraketBN
·
2016-05-03 11:00
POJ 1743 Musical Theme(
后缀数组
+二分)
Description给出一个数字串,求这个数字串中长度最少为5的最长重复子串的长度(重复字串不需要完全相同但不能有重叠,只要某个字串同时加减一个相同的值后变为另一个字串即可)Input多组用例,每组用例首先输入一整数n(n=k说明这两个子串不重叠,满足条件,如果所有组都不满足则不满足条件,注意这样算出的最长重复子串长度是差值串的,原串的最长重复字串长度还需要在这个基础上加一Code#includ
V5ZSQ
·
2016-05-03 11:00
POJ 2774 Long Long Message(
后缀数组
)
SampleInputyeshowmuchiloveyoumydearmotherreallyicannotbelieveityeaphowmuchiloveyoumydearmotherSampleOutput27Solution
后缀数组
V5ZSQ
·
2016-05-03 11:00
poj3581 Sequence (
后缀数组
)
TimeLimit: 5000MS MemoryLimit: 65536KTotalSubmissions: 6305 Accepted: 1364CaseTimeLimit: 2000MSDescriptionGivenasequence,{A1, A2,..., An}whichisguaranteed A1 > A2,..., An, youaretocutitintothreesub-se
Kirito_Acmer
·
2016-05-02 20:00
poj
后缀数组
UVA 11475 Extend to Palindrome (kmp || manacher ||
后缀数组
)
思路:这题可以kmp,manacher,
后缀数组
三种方法都可以做,kmp和manacher效率较高,时间复杂度是O(n),
后缀数组
时间复杂度是O(nlogn).思路是求出元串的后缀和反串的前缀匹配的最大长度
Kirito_Acmer
·
2016-05-01 15:00
KMP
后缀数组
Manacher
poj3415 Common Substrings (
后缀数组
+单调队列)
TimeLimit: 5000MS MemoryLimit: 65536KTotalSubmissions: 9414 Accepted: 3123DescriptionAsubstringofastring T isdefinedas:T(i, k)=TiTi+1...Ti+k-1,1≤i≤i+k-1≤|T|.Giventwostrings A, B andoneinteger K,wedefi
Kirito_Acmer
·
2016-04-30 17:00
后缀数组
单调队列
【模板】
后缀数组
#include #include #include #include usingnamespacestd; constintN=100010; intt1[N],t2[N],sa[N],c[N]; intRank[N],height[N]; chars[N]; intn; voidbuildsa(intm){ inti,*x=t1,*y=t2; for(i=1;i=1;i--)sa[c[x[i]
yxr0105
·
2016-04-30 12:00
模板
后缀数组
poj3693 Maximum repetition substring (
后缀数组
+rmq)
DescriptionTherepetitionnumberofastringisdefinedasthemaximumnumber R suchthatthestringcanbepartitionedinto R sameconsecutivesubstrings.Forexample,therepetitionnumberof"ababab"is3and"ababa"is1.Givenast
Kirito_Acmer
·
2016-04-29 22:00
后缀数组
RMQ
poj 3080 Blue Jeans
有人说用
后缀数组
。。不会。。但是discuss说kmp+暴力可以玩。于是真的好水这道题。。
qq_32995183
·
2016-04-29 20:00
KMP
poj
spoj687 REPEATS - Repeats (
后缀数组
+rmq)
Astringsiscalledan(k,l)-repeatifsisobtainedbyconcatenatingk>=1timessomeseedstringtwithlengthl>=1.Forexample,thestrings=abaabaabaabaisa(4,3)-repeatwitht=abaasitsseedstring.Thatis,theseedstringtis3chara
Kirito_Acmer
·
2016-04-29 18:00
后缀数组
RMQ
SPOJ 694(
后缀数组
)
D- NewDistinctSubstringsTimeLimit:280MS MemoryLimit:1572864KB 64bitIOFormat:%lld&%lluSubmit StatusDescriptionGivenastring,weneedtofindthetotalnumberofitsdistinctsubstrings.InputT-numberoftestc
qq_24489717
·
2016-04-29 13:00
后缀数组
应用小结
前言之前学了
后缀数组
,这真是一个神奇的东西。早就想总结一些SA的应用,但一直没时间,现在终于抽出空来写一下自己的心得。
Akakii
·
2016-04-28 23:51
SA
POJ 2774(
后缀数组
的应用)
LongLongMessageTimeLimit: 4000MS MemoryLimit: 131072KTotalSubmissions: 25926 Accepted: 10560CaseTimeLimit: 1000MSDescriptionThelittlecatismajoringinphysicsinthecapitalofByterland.Apieceofsadnewscomest
qq_24489717
·
2016-04-28 21:00
GDOI2016第二次模拟总结 4.25 ~ 4.27
又去想了想
后缀数组
,拓展KMP,感觉都没有SAM好打,就
YxuanwKeith
·
2016-04-28 08:00
后缀数组
模版
#include #include #include #include #include #include #include usingnamespacestd; constintmaxn=100009; ints[maxn],sa[maxn],len,c[maxn],t[maxn],t2[maxn]; voidbuild_sa(int*s,int*sa,intn,intm)//s原数组,sa
zhhx2001
·
2016-04-27 21:00
[SA] BZOJ 2251 [2010Beijing Wc]外星联络
见
后缀数组
后暴力就好了考前练版子,竟然WA了几发#include #include #include #include usingnamespacestd; inlinecharnc() { staticcharbuf
u014609452
·
2016-04-27 19:00
后缀数组
倍增算法代码及解释
经历最近在学习
后缀数组
,我发现
后缀数组
那20多行代码10多个for,真的是太抽象了,基数排序又不是很会所以学起来异常艰难,在冥思苦想以及抱神犇(Dumpling)的大腿后终于有些理解了,将自己写的注释发出来帮助和我一样的人
QWsin
·
2016-04-27 15:00
练习——
后缀数组
题目
BZOJ1717.[Usaco2006Dec]MilkPatterns产奶的模式题意:给一个字符串,求最长的出现至少K次的子串,子串可以重叠。难度:*和模型一样,直接上。CODE:#include#include#includeusingnamespacestd;constintMAX_N=20005;intn,K,a[MAX_N];voidinit(){scanf("%d%d",&n,&K);f
ALXPCUN
·
2016-04-27 09:50
【BZOJ4516】【Sdoi2016】生成魔咒
后缀数组
线段树
ZJOI2015陈老师幻想乡的简化(阉割)版,所以可以不用Trie上后缀自动机那么高大上的东西。。。首先不难想象出O(n^4)以及O(n^2)的做法,一种是每穷举一个字串再暴力检查是否已经出现,一种是在第一种的基础上Hash优化。这两种都没有什么卵用我们就不提了。首先我们将数字串反向读入,那么每一个加入的前缀对应反串的一个后缀,我们每加入一个字母,相当于有该字母开始的后缀和目前已经加入的后缀的最大
qq_34637390
·
2016-04-26 19:00
[bzoj 3676][uoj #103]【APIO2014】Palindromes回文串
后缀数组
+manachar
给你一个由小写拉丁字母组成的字符串ss。我们定义ss的一个子串的存在值为这个子串在ss中出现的次数乘以这个子串的长度。对于给你的这个字符串ss,求所有回文子串中的最大存在值。输入格式一行,一个由小写拉丁字母(a~z)组成的非空字符串ss。输出格式输出一个整数,表示所有回文子串中的最大存在值。样例一inputabacabaoutput7explanation用∣s∣∣s∣表示字符串ss的长度。一个字
ALPS233
·
2016-04-26 11:00
[bzoj 3676][uoj #103]【APIO2014】Palindromes回文串
后缀数组
+manachar
给你一个由小写拉丁字母组成的字符串ss。我们定义ss的一个子串的存在值为这个子串在ss中出现的次数乘以这个子串的长度。对于给你的这个字符串ss,求所有回文子串中的最大存在值。输入格式一行,一个由小写拉丁字母(a~z)组成的非空字符串ss。输出格式输出一个整数,表示所有回文子串中的最大存在值。样例一inputabacabaoutput7explanation用∣s∣∣s∣表示字符串ss的长度。一个字
ALPS233
·
2016-04-26 11:00
usaco隐藏口令
过几天一定要学
后缀数组
,题解上说可以用
后缀数组
解决 这里用,最小表示法,也算是一个模版了吧!usaco隐藏口令有时候程序员有很奇怪的方法来隐藏他们的口令。
zhhx2001
·
2016-04-25 22:00
【APIO2014】【UOJ103】【BZOJ3676】 Palindromes 题意&代码(C++)
题目链接:http://uoj.ac/problem/103题解:一道题让我新了解到了两个算法:处理回文子串问题的manacher算法与快速求RMQ的ST算法,至于
后缀数组
之前学习过不过还是抄模板了,附学习资料
deritt
·
2016-04-25 15:41
oi之路
DERIT的博客专栏
【APIO2014】【UOJ103】【BZOJ3676】 Palindromes 题意&代码(C++)
题目链接:http://uoj.ac/problem/103题解:一道题让我新了解到了两个算法:处理回文子串问题的manacher算法与快速求RMQ的ST算法,至于
后缀数组
之前学习过不过还是抄模板了,附学习资料
DERITt
·
2016-04-25 15:00
算法
字符串
后缀数组
st
Manacher
【APIO2014】【UOJ103】【BZOJ3676】 Palindromes 题意&代码(C++)
题目链接:http://uoj.ac/problem/103题解:一道题让我新了解到了两个算法:处理回文子串问题的manacher算法与快速求RMQ的ST算法,至于
后缀数组
之前学习过不过还是抄模板了,附学习资料
DERITt
·
2016-04-25 15:00
算法
字符串
后缀数组
st
Manacher
梳理——
后缀数组
应用
//难度从*~*****递增,*为简单一、一个字符串1.POJ1743——不可重叠的最长重复子串题意:给一个字符串,求重复出现的子串中最长的,子串不能重叠。难度:*算法&&技巧:如果是求可以重叠直接找Height数组中最大的就可以,但是要不能重叠,就需要二分答案,并按照二分的结果把Height分组,判断存在的条件是某一组中sa的最大最小值相减大于二分长度。2.POJ3261——可重叠并且出现至少K
ALXPCUN
·
2016-04-25 08:03
利用
后缀数组
构造后缀树
前段时间学
后缀数组
的时候上网查相关资料,看到说
后缀数组
和后缀树是可以相互转化的,并且uoj上有大量通过后缀自动机建出后缀树然后dfs遍历获得
后缀数组
的模板,但是通过
后缀数组
来建后缀树的资料确实稀缺。
u011542204
·
2016-04-24 19:00
上一页
13
14
15
16
17
18
19
20
下一页
按字母分类:
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
其他