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
——后缀数组
HDU3065 病毒侵袭持续中(AC自动机或
后缀数组
)
如果用
后缀数组
的话,我觉得可以O(NlogM)(N为串的总长度,M为模式串最长长度)来Build。
geng4512
·
2015-12-23 20:00
bzoj1031(
后缀数组
)
1031:[JSOI2007]字符加密CipherTimeLimit: 10Sec MemoryLimit: 162MBSubmit: 4697 Solved: 1923[Submit][Status][Discuss]Description喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考。一天,他突然想出了一种他认为是终极的加密办法:把需要加密的信息排成一圈,显然,它们有很多种不同的读法
M_AXSSI
·
2015-12-20 10:00
最长回文子串的查找
时间复杂度为O(n)然后
后缀数组
的做法,在罗穗骞大神的论文里也写得很清楚了,即把原串反着放回到前一个的后面(中间用一个特殊符号分割)(同样的,用特殊符号处理成长度为奇数的串)。
geng4512
·
2015-12-19 14:00
后缀数组
模板
boolcmp(int*y,inta,intb,intl) { returny[a]==y[b]&&y[a+l]==y[b+l]; } voidpd(intn,intm) { inti,j,p,*x=prnk,*y=psa; for(i=0;i=0;--i)sa[--bucket[x[i]]]=i; for(j=1,p=1;p=j)y[p++]=sa[i]-j; for(i=0;i=0;--i)s
Quack_quack
·
2015-12-19 11:00
UVa 719 - Glass Beads 字符串算法的合集
本文将用三个算法来解决此题提示:(如果你是顺着INTERMEDIATE往下做的这个题有一个明显的思路)1.想办法使用
后缀数组
,因为题目要求的是一种字符串的循环表示形式(AKA字符串表示法),那么可以把字符串写两遍然后跑一跑
后缀数组
啊
Fuxey
·
2015-12-18 17:00
字符串
后缀数组
uva
最小表示法
后缀自动机
【poj3693】Maximum repetition substring(
后缀数组
+RMQ)
传说中的
后缀数组
神题,蒟蒻真的调了很久才对啊。
konjak魔芋
·
2015-12-15 16:00
后缀数组
模板
//Copyright(c)2015liuchenrui #include #include #include #include #include usingnamespacestd; inlinevoidsplay(int&v){ v=0;charc=0;intp=1; while(c'9'){if(c=='-')p=-1;c=getchar();} while(c>='0'&&c=1;i--)
lcrtest
·
2015-12-15 16:00
模板
【
后缀数组
】[POJ1743]Musical Theme 乐曲主旋律
题目:
后缀数组
模板题,做法参见罗穗骞论文。自认为代码写得比较好看。
wangyaninglm
·
2015-12-14 13:00
C++
字符串
poj
后缀数组
SA
关于
后缀数组
的倍增算法和height数组
自己看着大牛的论文学了一下
后缀数组
,看了好久好久,想了好久好久才懂了一点点皮毛TAT 然后就去刷传说中的
后缀数组
神题,poj3693是进化版的,需要那个相同情况下字典序最小,搞这个搞了超久的说
konjak魔芋
·
2015-12-12 10:00
【bzoj3238】[Ahoi2013]差异
后缀数组
+单调栈
首先求出height数组,原式很明显可以化成一堆长度的和-两两LCP的和,所以我们考虑每个height能充当多少个区间的最小值即可,那么这个问题可以用单调栈解决,从左和从右各维护一个单调递增的单调栈,求出点i向左和向右分别最多能延伸多长。注意:1.height数组的[i,i]是要计入区间数的,因为我们查询lcp(i,j)的时候查询的是height数组中rank[i]+1~rank[j]的最小值,所
u012288458
·
2015-12-06 19:00
SPOJ SUBST1 New Distinct Substrings
后缀数组
-子串个数
#include #include usingnamespacestd; constintmaxn=200000; intt1[maxn],t2[maxn],c[maxn]; boolcmp(int*r,inta,intb,intl) { returnr[a]==r[b]&&r[a+l]==r[b+l]; } voidda(intstr[],intsa[],intrank1[],intheight
xinag578
·
2015-12-04 22:00
SPOJ DISUBSTR Distinct Substrings
后缀数组
子串个数
#include #include #include #include usingnamespacestd; constintN=100005; intwa[N],wb[N],ws[N],wv[N]; intrk[N],height[N]; boolcmp(intr[],inta,intb,intl){ returnr[a]==r[b]&&r[a+l]==r[b+l]; } voidda(i
xinag578
·
2015-12-04 22:00
字符串学习计划
1.三个匹配算法:RK,自动机,KMP2.有关字符串的dp3.
后缀数组
和后缀树4.高度数组 5.最小表示法6.表达式处理7.MANACHER8.前后缀思想总结,有关算法
qq_20669971
·
2015-12-04 10:00
poj 3261 Milk Patterns 可重叠的k次最长重复子串
后缀数组
da算法
#include #include #include usingnamespacestd; constintmaxn=2000000; intt1[maxn],t2[maxn],c[maxn]; boolcmp(int*r,inta,intb,intl) { returnr[a]==r[b]&&r[a+l]==r[b+l]; } voidda(intstr[],intsa[],intrank
xinag578
·
2015-12-03 22:00
poj 1743 Musical Theme
后缀数组
da算法
#include #include #include usingnamespacestd; constintmaxn=200000; intt1[maxn],t2[maxn],c[maxn]; boolcmp(int*r,inta,intb,intl) { returnr[a]==r[b]&&r[a+l]==r[b+l]; } voidda(intstr[],intsa[],intrank1[]
xinag578
·
2015-12-03 20:00
hdu 1403 Longest Common Substring
后缀数组
da算法
/**suffixarray*倍增算法O(n*logn)*待排序数组长度为n,放在0~n-1中,在最后面补一个0*da(str,n+1,sa,rank,height,,);//注意是n+1;*例如:*n=8;*num[]={1,1,2,1,1,1,1,2,$};注意num最后一位为0,其他大于0*rank[]={4,6,8,1,2,3,5,7,0};rank[0~n-1]为有效值,rank[n]必
xinag578
·
2015-12-03 18:00
算法设计 - LCS 最长公共子序列&&最长公共子串 &&LIS 最长递增子序列
最长公共子串用动态规划可实现O(n^2)的时间复杂度,O(n^2)的空间复杂度;还可以进一步优化,用
后缀数组
的方法优化成线性时间O(nlog
sushauai
·
2015-11-30 20:00
计数排序和基数排序
计数排序是基数排序的基础,最为关键的是:基数排序算法是
后缀数组
的关键(当然
后缀数组
也可以用快排),
后缀数组
是用于处理字符串的一种非常优秀的数据结构,可以高效的处理很多字符串问题,比如重复子串,回文子串等等
uestclr
·
2015-11-30 09:00
排序算法
基数排序
计数排序
字符串比较
字典序
HDU 5558
后缀数组
+二分
题意有一些绕,但其实就是对于不断变化的i,求以j(0=j 2#include 3#include 4#include 5#include 6#include 7#include 8#include 9#include 10#include 11#include 12#include 13#include 14#include 15usingnamespacestd;
夢中花落
·
2015-11-24 23:00
BZOJ4319: cerc2008 Suffix reconstruction Suffix Array 的理解
如果这一题自己做的话是可以加深对
后缀数组
的理解的。。。。那我就直接厚脸皮的套别人结论了。。。考虑sa的计算方式,然后贪心。 如果当前sa的下一位的rank大于下个sa的
liutian429073576
·
2015-11-22 09:00
array
Suffix
求串的第一个最长重复子串的下标和长度
1.读取串2.求
后缀数组
3.字典序排序所有后缀4.求相邻后缀最长子串5.比较本次结果与上次结果,取最大*/#include#include#include#include#include#includeusingnamespacestd
J_Anson
·
2015-11-17 16:00
数据结构
算法
后缀数组
poj 3415 Common Substrings
id=3415题目分类:
后缀数组
题意:给出两个串和一个数字k,求两个串的公共字串大于等于k的数目代码://#include #include #include #include #include
唯爱与代码,不可辜负
·
2015-11-15 23:00
poj 3450 Corporate Identity
id=3450题目分类:
后缀数组
题意:求n个串的最长公共字串(输出字串)//#include #include #include #include #include usingnamespacestd
唯爱与代码,不可辜负
·
2015-11-15 23:00
poj 2774 Long Long Message
id=2774题目分类:
后缀数组
题意:两个串,求两个串的最长公共字串的长度代码://#include #include #include #include #include usingnamespacestd
唯爱与代码,不可辜负
·
2015-11-15 23:00
hdu5558 Alice's Classified Message
后缀数组
首先计算出sa,rank,height数组,易知,不妨设x,y(rank[x] #include #include usingnamespacestd; //
后缀数组
模板 /* 样例使用: 若原字符串为
u010005180
·
2015-11-14 17:00
bzoj 1301
后缀数组
比较裸的
后缀数组
。
·
2015-11-13 21:49
后缀数组
bzoj 3172
后缀数组
|AC自动机
后缀数组
或者AC自动机都可以,模板题。
·
2015-11-13 20:41
AC自动机
poj 2774 Long Long Message,
后缀数组
,求最长公共子串 hdu1403
题意:给出两个字符串,求最长公共子串的长度。 题解:首先将两个字符串连在一起,并在中间加一个特殊字符(字串中不存在的)切割,然后两个串的最长公共字串就变成了全部后缀的最长公共前缀。这时就要用到height数组,由于随意两个后缀的公共前缀必然是某些height值中的最小值,而这个值假设最大则一定是height中的最大值。在此题中还要注意height最大一定要在两个值所代表的后缀分属不同的字符
·
2015-11-13 20:06
message
hdu 4080 Stammering Aliens -
后缀数组
/* 其实这题才是第一次做 但是一直不过,也不知道怎么回事儿 就去调了那个简单题做 现在才发现少了main里面的if 还有ok2 是我之前写的,但是少了个{} 题意是,在所给的字符串中找一个子串,最少出现m次,求那个最长的串,并输出最后一次的开始位置 按长度二分,判断是否符合条件即可 */ #include<stdio.h> #
·
2015-11-13 19:20
后缀数组
后缀数组
我们这里介绍
后缀数组
的组建。 直接上代码,如果不知道什么是
后缀数组
,请问度娘。
liutian429073576
·
2015-11-13 18:00
CF(427D-Match & Catch)
后缀数组
应用
解法:
后缀数组
的应用。从小枚举长度。假设一个长度len合法的话:则一定存在这个样的sa[i]排名。
·
2015-11-13 18:34
catch
poj 3261 Milk Patterns
后缀数组
最长重复子串
后缀数组
求出 height[],若连续k个height[]都大于mid,就可以了。当然要找最大的mid,这里可用二分查找.。
·
2015-11-13 16:34
Pattern
BZOJ 3172([Tjoi2013]单词-
后缀数组
第一题+RMQ)
3172: [Tjoi2013]单词 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 268 Solved: 145 [ Submit][ Status] Description 某人读论文,一篇论文是由许多单词组成。但他发现一个
·
2015-11-13 16:37
后缀数组
POJ 3261
后缀数组
题意: 最长的出现k次的重复(可重叠)子串 题解: 和POJ 1743一样,稍作改变,求最大的话一般都是对
后缀数组
二分处理。。
·
2015-11-13 15:13
后缀数组
最长重复子串(可重叠)
后缀数组
http://www.bianchengla.com/course/ds/practise/problem?id=1387 找了半天终于找到一个可以提交的地方。。。 题解: 任何一个重复子串,都必然是某两个后缀的最长公共前缀。 因为,两个后缀的公共前缀,它出现在这两个后缀中,并且起始位置时不同的,所以这个公共前缀必然重复出现两次以上(可重叠)。 而任何两个后缀的最长公共前
·
2015-11-13 15:11
后缀数组
SPOJ 694/705
后缀数组
题意: 求单个子串的不重复子串个数 题解: 一个字符串中的所有子串都必然是它的后缀的前缀。 对于每一个sa[i]后缀,它的起始位置sa[i],那么它最多能得到该后缀长度个子串(n-sa[i]个),而其中有height[i]个是与前一个后缀相同的,所以它能产生的实际后缀个数便是n-sa[i]-height[i]。遍历一次所有的后缀,将它产生的后缀数加起来便是答案。 &nbs
·
2015-11-13 15:11
后缀数组
BZOJ 1031
后缀数组
题解: 把原串直接接在后头,然后
后缀数组
本来就排序好了,正好用来求题目所需~ 毛线的,nlogn的就是烦,还是nlog^2n的好写,, View Code 1 #include
·
2015-11-13 14:55
后缀数组
poj 3261
后缀数组
二分+
后缀数组
#include <iostream> #include <cstdio> #include <cstring> #include
·
2015-11-13 13:47
后缀数组
Codeforces Round #166 (Div. 1) && (Div. 2)
后缀数组
解决!!!
·
2015-11-13 13:34
codeforces
编程珠玑---读书笔记---使用
后缀数组
查找最长重复子串
后缀数组
是一个字符指针数组,数组中指针所指的对象包含了字符串的每一个后缀,因此成为
后缀数组
。
·
2015-11-13 13:40
读书笔记
hdu 4622 Reincarnation (后缀自动机)
解题思路:之前写过一个
后缀数组
的解法http://blog.csdn.net/no__stop/article/details/9669325。这几天学了下后缀自动机,所以拿出来写了一下。
·
2015-11-13 12:17
HDU
POJ 3974 最长回文字串(manacher算法)
思路:一开始我直接上了
后缀数组
DC3的解法,然后MLE了。看了DISCUSS发现还有一种计算回文字串更加优越的算法,就是manacher算法。
·
2015-11-13 12:54
poj
poj 1743 男人八题之
后缀数组
求最长不可重叠最长重复子串
Musical Theme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14874 Accepted: 5118 Description A musical melody is represented as a sequence of N (1<=N<
·
2015-11-13 11:55
后缀数组
后缀数组
--可重叠的K次最长重复子串(POJ3261)
题目:Milk Patterns #include <stdio.h> #include <string.h> #define N 1000010 int wa[N],wb[N],wv[N],ws[N]; int rank[N],height[N]; int sa[N],r[N]; int abs(int x) { retu
·
2015-11-13 11:53
后缀数组
SPOJ1811最长公共子串问题(后缀自动机)
分析:其实本题用
后缀数组
的DC3已经能很好的解决,这里我们来说说利用后缀自动机如何实现。
·
2015-11-13 11:40
poj
【POJ】1743 Musical Theme
id=1743 题意:不可重叠最长重复子串,n<=20000,具体看《
后缀数组
》-- 罗穗骞 #include <cstdio> #include <algorithm
·
2015-11-13 11:51
theme
【BZOJ】1031: [JSOI2007]字符加密Cipher(
后缀数组
)
id=1031 很容易想到这就是将字符串复制到自己末尾然后
后缀数组
搞出sa然后按区间输出即可。
·
2015-11-13 11:23
后缀数组
【BZOJ】1692 & 1640: [Usaco2007 Dec]队列变换(
后缀数组
+贪心)
那么我们需要用
后缀数组
来加速判断向右(左)拓展时的最小。 (ps:
后缀数组
的c数
·
2015-11-13 11:25
USACO
HDU 4691(多校第九场1006)
后缀数组
。。。还能多说什么。 眼角一滴翔滑过。 一直以为题意是当前串与所有之前输入的串的LCP。。。然后就T了一整场。 扫了一眼标程突然发现他只比较输入的串和上一个串? 我心中突然有千万匹草泥马踏过。 然后随手就A了。。。 先RMQ预处理一下,复杂度为nlogn ,然后每次LCP询问只需O(1)的复杂度。 #include <set> #include <
·
2015-11-13 10:57
后缀数组
poj 3623 Best Cow Line, Gold
但是多加思索的话可以发现我们可以用
后缀数组
保存原串和反串,使复杂度降低到nlongn。 #include <ios
·
2015-11-13 10:43
poj
上一页
15
16
17
18
19
20
21
22
下一页
按字母分类:
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
其他