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
----后缀数组
HDU3518
后缀数组
解题报告:
后缀数组
即可解之。枚举字串长度h对于每一次的h,利用height数组,找出连续的height大于等于h的里面最左端和最右端得为之l和r。
SprintfWater
·
2013-04-04 21:00
后缀数组
模板
我的模板是根据罗穗骞和网上一模板相结合改编而来,层次更加分明,数组名称的选择是根据用途来定义的,总的来说应该更好理解一些:先声明一些概念:k-
后缀数组
:我这里用的是sa[](k)k-名次数组:我这里用的是
Hhaile
·
2013-03-28 19:00
HDU 3518 Boring counting(后缀自动机 SAM)
思路:好像标程给的是
后缀数组
,但我是后缀自动机过的,我们只要在后缀自动机中的每一个状态里,设l,r分别表示在这个状态中的子串集合的最左与最右位置,num表示这个状态中的子串一共出现了多少次。
dyx404514
·
2013-03-24 19:00
PKU3261(Milk Patterns)求可重叠k次的最长重复子串(
后缀数组
+二分)
********** 题目大意: 给定一个字符串,求至少出现k次的最长重复子串,这k个子串可以重叠; 算法分析: 这个题和PKU1743的做法差不多; 也是先二分答案,然后将后缀分成若干组; 即先用
后缀数组
求出
Jarily
·
2013-03-23 16:00
Algorithm
算法
ACM
PKU2774(Long Long Message)求最长公共子串(
后缀数组
)
/******************************************************* 题目大意: 给定两个字符串A和B,求最长公共子串; 算法思想: 字符串的任何一个子串都是这个字符串的某个后缀的前缀; 求A和B的最长公共子串等价于求A的后缀和B的后缀的最长公共前缀的最大值; 如果枚举A和B的所有的后缀,很明显效率低下; 由于要计算A的后缀和B的后缀的最长公共前缀,所
Jarily
·
2013-03-23 15:00
Algorithm
算法
ACM
PKU1743(Musical Theme)求不可重叠最长重复子串(
后缀数组
+二分)
/********************************************** 题目大意: 给出一个旋律,用n个数字[1,88]表示其音符,求它的最长的主题长度; 一个旋律的主题是一段至少出现过两次的不重叠音乐片段; 重复出现也包括一段音乐全体加上某个数后再次出现(如12345和56789为同一个音乐片段,全部+4); 主题长度至少为5,无解输出0; 算法分析: 给定一个字符串,
Jarily
·
2013-03-22 15:00
Algorithm
实现
后缀数组
的倍增算法和DC3算法
/************************************************ 数据结构:
后缀数组
(Suffix_Array); 子串: 字符串S的子串r[i..j],i≤j,表示
Jarily
·
2013-03-22 14:00
Algorithm
tree
ACM
RMQ问题
作者:dylantsou出处:http://blog.csdn.net/dylantsou引言: 在本人的上一篇关于
后缀数组
的博客中,在例2求最长回文子串中提到过:要求其一个数组中任意区间的最大最小值
z309241990
·
2013-03-18 19:00
RMQ
POJ3450:Corporate Identity(
后缀数组
)
DescriptionBesideotherservices,ACMhelpscompaniestoclearlystatetheir“corporateidentity”,whichincludescompanylogobutalsoothersigns,liketrademarks.OneofsuchcompaniesisInternetBuildingMasters(IBM),whichha
libin56842
·
2013-03-12 20:00
poj
后缀数组
【数据结构】
后缀数组
//字符串处理
后缀数组
voidbuild_sa(char*s)//字符串从第一位开始读入,第0位任意填入一个字符便于操作 { intj,num,n=strlen(s)-1,m=200,*x=a1,*y
JarjingX
·
2013-03-12 10:00
字符串
模板
后缀数组
后缀数组
详解
这是一部分,以后还会更新的 #include #include #include #include #definemaxn10000 usingnamespacestd; chars[maxn],s1[maxn]; intsa[maxn];/***sa[第几大]=第几位开始的后缀***/ intRank[maxn];/***rank[第几位开始的后缀]=第几大***/ int
xsc906476903
·
2013-02-27 19:00
hdu 3518
后缀数组
/*枚举字串的长度1~n/2;通过height来判断两个字串相同的长度,在符合要求的长度里记录距离最远的两个字串的起始位置l,r最后通过l+len-1 #include #include usingnamespacestd; constintmaxn=1100; chars[maxn]; intsa[maxn],t[maxn],t2[maxn],c[maxn]; voidbuild_sa(in
laziercs
·
2013-02-24 14:00
poj3080 (二分+
后缀数组
)简单题
求最长的公共字串。#include #include #definemax610 intnext[max],sa[max]; intwa[max],wb[max],wv[max],ws[max]; intrank[max],height[max]; intvis[max]; chartem[max]; intstr[max],lcp[max],n; charans[max]; intcmp(int
wahaha1_
·
2013-01-30 16:00
poj3261 (二分+
后缀数组
)可重叠的至少为k次最长重复字串
#include #include #definemax1000100 intrank[max],wa[max],wb[max],wv[max],wn[max]; intheight[max],sa[max],r[max]; intN,K; intcmp(int*r,inta,intb,intl) { returnr[a]==r[b]&&r[a+l]==r[b+l]; } voidda(int*r
wahaha1_
·
2013-01-30 09:00
poj3294 二分+
后缀数组
//
后缀数组
sa:将str的n个后缀从小到大进行排序之后把排好序的后缀的开头位置顺次放入SA中。 #include #include #definemax10
wahaha1_
·
2013-01-29 13:00
poj2955
后缀数组
思路:将它们合并为一个串,然后利用
后缀数组
求解。
wahaha1_
·
2013-01-26 13:00
hdu3518
后缀数组
题意:找出一个字符串中至少重复出现两次的字串的个数,注意重复出现时不能有重叠的现象思路:利用height[]性质解决。//height[i]=suffic(sa[i-1])和suffix(sa[i])的最长公共前缀,也就是 //排名相邻的两个后缀的最长公共前缀。 //suffix(j)和suffix(k)的最长公共前缀为height[rank[j]+1],height[rank[j]+2], //
wahaha1_
·
2013-01-25 20:00
hdu1403 简单的
后缀数组
思路:将它们合并为一个串,然后利用
后缀数组
求解。
wahaha1_
·
2013-01-25 16:00
hdu 4436
后缀数组
某牛的解题思路:题目大意给出n个字符串,求出所有字符串中出现的不同的整数和mod2012的值(即出现多次算一次)找出所有的子串然后出重,先用分隔符符将所有串都连接起来,然后跑
后缀数组
,接下来就是计算。
azheng51714
·
2013-01-25 15:00
hdu 3415
后缀数组
长度不小于 k 的公共子串的个数
///长度不小于k的公共子串的个数 /* 单调队列优化 1aa1 2ab1 3abc2 4ad1 */ #include #include #include #include usingnamespacestd; constintMAXN=2222222; chars1[MAXN],s2[MAXN]; intr[MAXN],lcp[MAXN],num; intwa[MAXN],wb[MAXN],w
azheng51714
·
2013-01-25 11:00
poj 2774 最长公共子串
后缀数组
#include #include #include #include usingnamespacestd; constintMAXN=2222222; chars1[MAXN],s2[MAXN]; intr[MAXN],lcp[MAXN]; intwa[MAXN],wb[MAXN],wv[MAXN],tmp[MAXN],a[MAXN];; intsa[MAXN];//indexrange1~n
azheng51714
·
2013-01-24 20:00
poj 2406 D3C 算法
后缀数组
连续重复子串
#include #include #include #include usingnamespacestd; constintMAXN=10000005; intr[MAXN],lcp[MAXN]; chars[MAXN]; #defineF(x)((x)/3+((x)%3==1?0:tb)) #defineG(x)((x)=0;i--)b[--wws[wv[i]]]=a[i]; return;
azheng51714
·
2013-01-24 16:00
poj 3261
后缀数组
Or KMP 可重叠的 k 次最长重复子串
///题意:求一个串至少出现k次的最长重复子串的长度,可重叠 #include #include #include #include #include #include #defineMAXN22222 usingnamespacestd; intr[MAXN]; intwa[MAXN],wb[MAXN],wv[MAXN],tmp[MAXN],a[MAXN];; intsa[MAXN];//ind
azheng51714
·
2013-01-24 12:00
poj 1743 字符串
后缀数组
不可重叠最长重复子串
题意:有N个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题。“主题”是整个音符序列的一个子串,它需要满足如下条件: 1.长度至少为5个音符。 2.在乐曲中重复出现。(可能经过转调,“转调”的意思是主题序列中每个音符都被加上或减去了同一个整数值) 3.重复出现的同一主题不能有公共部分。首先看到转调,这很重要,一个序列中的数加上同一个数变成另一个序列,
azheng51714
·
2013-01-24 11:00
后缀数组
倍增模版+D3C模版
intwa[maxn],wb[maxn],wv[maxn],ws[maxn]; intcmp(int*r,inta,intb,intl) {returnr[a]==r[b]&&r[a+l]==r[b+l];} voidda(int*r,int*sa,intn,intm) { inti,j,p,*x=wa,*y=wb,*t; for(i=0;i=0;i--)sa[--ws[x[i]]]=i; for
azheng51714
·
2013-01-23 16:00
Manacher算法
求最长回文子串可以用
后缀数组
,扩展KMP算法,Manacher算法,其中Manacher算法无论时间还是编程复杂度都是最好的,其时间复杂度为O(n)#include #include #include
ACdreamers
·
2013-01-22 19:00
字符串:KMP Eentend-Kmp 自动机 trie图 trie树 后缀树
后缀数组
涉及到字符串的问题,无外乎这样一些算法和数据结构:自动机KMP算法Extend-KMP后缀树
后缀数组
trie树trie图及其应用。
Athenaer
·
2013-01-17 17:00
字符串系列算法题
而某两个后缀的lcs的计算利用
后缀数组
,可以O(1),这样总的复杂度就可以
月貘苏
·
2013-01-17 11:17
技术
算法之道
字符串系列算法题
而某两个后缀的lcs的计算利用
后缀数组
,可以O(1),这样总的复杂度就可
Athenaer
·
2013-01-17 11:00
【转】倒排文件索引(Inverted File Index)的建立
建立索引目前主流的索引技术有三种:倒排文件、
后缀数组
和签名。
后缀数组
的方法虽然快,但是其维护困难,代价相当高,不适合做引擎的索引。签名是一种很好的索引方式,但倒排文件的速度和性能已经超过了签名。
lewsn2008
·
2013-01-04 15:00
hdu 3518 Boring counting
第一次
后缀数组
题,头晕,转载下:来自http://blog.csdn.net/wchyumo2009/article/details/7424393/*以下内容出自《
后缀数组
——处理字符串的有力工具》1
a601025382s
·
2012-11-30 15:00
后缀数组
Manacher算法:求解最长回文字符串,时间复杂度为O(N)
朴素算法是依次以每一个字符为中心向两侧进行扩展,显然这个复杂度是O(N^2)的,关于字符串的题目常用的算法有KMP、
后缀数组
、AC自动机,这道题目利用扩展KMP可以解答,其时间复杂度也很快O(N*logN
Athenaer
·
2012-11-29 15:00
POJ3294 出现在至少k个字符串中的最长子串
因此还是使用
后缀数组
。首先把问题变成判定性问题,即长度为某个值的满足条件的子串是否存在。这样就可以使用二分来求解。接着是把n个字符串用某个字符连接起来。计算出sa数组和height数组。
alongela
·
2012-11-24 01:00
后缀数组
模版
代码来自算法竞赛入门经典。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include usingnamespacestd; typedeflonglongLL; #defineEPS10e-
w00w12l
·
2012-11-21 12:00
MF算法 --- 传说
后缀数组
中最快的构建法
MF算法---传说
后缀数组
中最快的构建法GiovanniManziniandPaoloFerragina吸取了前人多种经验,结合n个算法,组建了最快的sa构建法.2005年新出的算法.是GNU开源项目,
C++ Coder
·
2012-11-20 15:00
ACM算法列表
,队列,链表哈希表,哈希数组堆,优先队列双端队列可并堆左偏堆二叉查找树Treap伸展树并查集集合计数问题二分图的识别平衡二叉树二叉排序树线段树一维线段树二维线段树树状数组一维树状数组N维树状数组字典树
后缀数组
Tsaid
·
2012-11-07 19:00
后缀数组
的学习(五):calHeight实现代码分析
把前面的倍增算法的内容看懂大概后,由于时间问题,就直接跳到calHeight()方法的研究中去! 在实际应用,仅有sa数组是不够的,为了快速求解,还需要一个height数组!height数组的定义很容易理解:height[i]=suffix(sa[i-1])与suffix(sa[i])的最长公共前缀,也就是排名相邻的两个后缀的最长公共前缀! 但是height的求解代码写得很晦涩,我只能
sbp810050504
·
2012-10-29 20:21
后缀数组
height数组的求解
后缀数组
的学习(五):calHeight实现代码分析
把前面的倍增算法的内容看懂大概后,由于时间问题,就直接跳到calHeight()方法的研究中去!在实际应用,仅有sa数组是不够的,为了快速求解,还需要一个height数组!height数组的定义很容易理解:height[i]=suffix(sa[i-1])与suffix(sa[i])的最长公共前缀,也就是排名相邻的两个后缀的最长公共前缀!但是height的求解代码写得很晦涩,我只能说作者的水平很高
sbp810050504
·
2012-10-29 20:21
后缀数组
height数组的求解
数据结构与算法
后缀数组
的学习(四):SA数组实现代码分析
需要说的都已经在源代码中注明了!#include #include #include using namespace std; int cmp(int *r,int a,int b,int l){ return r[a]==r[b]&&r[a+l]==r[b+l]; } #define M 100 int wa[M],wb[M],wv[M],ws[M]; int SA[M]; char
sbp810050504
·
2012-10-28 21:41
后缀数组
SA数组
rank数组
数据结构与算法
后缀数组
的学习(四):SA数组实现代码分析
需要说的都已经在源代码中注明了! #include #include #include using namespace std; int cmp(int *r,int a,int b,int l){ return r[a]==r[b]&&r[a+l]==r[b+l]; } #define M 100 int wa[M],wb[
sbp810050504
·
2012-10-28 21:41
后缀数组
SA数组
rank数组
再回首基数排序
前几天学习
后缀数组
的时候,用到了基数排序!就再复习了一下!
sbp810050504
·
2012-10-28 10:26
基数排序
基数排序
lsd
msd
基数最高位开始
再回首基数排序
前几天学习
后缀数组
的时候,用到了基数排序!就再复习了一下!
sbp810050504
·
2012-10-28 10:26
基数排序
LSD
基数排序
MSD
数据结构与算法
后缀数组
的学习(三):SA数组实现代码分析
在前面的博文里面分析了SA数组和rank数组的实现过程,实际上也就是倍增算法的思想分析!虽然思想上面懂了,但是代码实现还是很难理解的!因为代码里面做了太多的优化。 整个代码的实现可以分成两部分:1、对所有后缀的第一次排序!运用第一次排序的结果来推算后面的排序! 一、对所有后缀的第一次排序: for (i = 0; i = 0; i--) sa[--ws[x[i]]] = i; 这
sbp810050504
·
2012-10-27 14:36
后缀数组
倍增算法
SA和RANK数组的计算过程
后缀数组
的学习(三):SA数组实现代码分析
在前面的博文里面分析了SA数组和rank数组的实现过程,实际上也就是倍增算法的思想分析!虽然思想上面懂了,但是代码实现还是很难理解的!因为代码里面做了太多的优化。整个代码的实现可以分成两部分:1、对所有后缀的第一次排序!运用第一次排序的结果来推算后面的排序!一、对所有后缀的第一次排序:for (i = 0; i = 0; i--) sa[--ws[x[i]]] = i; 这里用到了x和ws两个辅助
sbp810050504
·
2012-10-27 14:36
后缀数组
SA和RANK数组的计算过程
倍增算法
数据结构与算法
后缀数组
的学习(二):如何用基数排序来快速构造出SA数组
如果不懂基数排序,我觉得不用急着去学习
后缀数组
了!先把基础搭起来再往下走! 第一句话:倍增充分利用了后缀之间的联系! 在许大牛的论文对
sbp810050504
·
2012-10-27 11:29
后缀数组
SA和RANK数组的计算过程
后缀数组
的学习(二):如何用基数排序来快速构造出SA数组
如果不懂基数排序,我觉得不用急着去学习
后缀数组
了!先把基础搭起来再往下走!第一句话:倍增充分利用了后缀之间的联系!在许大牛的论文对这一点论述得很清楚:我们
sbp810050504
·
2012-10-27 11:29
后缀数组
SA和RANK数组的计算过程
数据结构与算法
后缀数组
的学习(一):学习的预备知识
去年的时候弄了一阵子的
后缀数组
,当时一直都没有弄懂!今年再看
后缀数组
,似懂非懂!其实还是没懂!但比去年的完全不懂,还是有进步的!下来把思路理了理,要看明白
后缀数组
,是需要一些知识储备的!
sbp810050504
·
2012-10-25 16:30
后缀数组
数据结构与算法
后缀数组
的学习(一):学习的预备知识
去年的时候弄了一阵子的
后缀数组
,当时一直都没有弄懂!今年再看
后缀数组
,似懂非懂!其实还是没懂!但比去年的完全不懂,还是有进步的!
sbp810050504
·
2012-10-25 16:30
后缀数组
hdu 3068 最长回文 Manacher算法
该题貌似可以用
后缀数组
和扩展kmp做,但是好像
后缀数组
貌似会tle,改学了下一个专门的叫Manacher算法的东西。。。 这又是一个线性改良算法。
yx
·
2012-10-24 20:00
poj 3294 Life Forms
后缀数组
求至少出现在K个字符串中的最长公共子串
poj3294LifeForms
后缀数组
求至少出现在K个字符串中的最长公共子串 此题就是给出N个字符串,然后求一个最长的子串,它至少出现在N/2+1个字符串中,如果有多个这样的子串,按字典序输出,如果没有这样的子串
yx
·
2012-10-24 15:00
上一页
33
34
35
36
37
38
39
40
下一页
按字母分类:
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
其他