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-后缀数组
CM开发日志 - 搜索引擎(四) - Lucene 反向索引
(很多文章也称为倒排索引)索引技术主要有以下3种:反向索引,
后缀数组
和签名文件。
alli0968
·
2015-03-11 12:00
搜索引擎
索引
Lucene
Solr
电子商务
ZOJ 3199 Longest Repeated Substring
后缀数组
+ RMQ预处理
题目大意:给定多个长度不超过50000的字符串,求最长的重复子串的长度,最长重复子串s定义为,在s出现之后紧跟这又出现一次的串(两次出现相邻但没有交集)大致思路:很容易想到用
后缀数组
来做,从长到短枚举长度即可
u013738743
·
2015-03-10 17:00
ZOJ
后缀数组
3199
RMQ预处理
hdu 4622 Reincarnation (后缀自动机)
题解:这题有两种做法,一种是
后缀数组
,一种是自动机,两种方法的思想是一致。
My_ACM_Dream
·
2015-03-10 15:00
HDU 4436 str2int
后缀数组
+ 前缀和预处理 或 后缀自动机
题目大意:对于给出的n个字符串(n #include//之前写了很多头文件导致rank数组模糊定义了..看来HDU上交
后缀数组
还是要注意一下 usingnamespacestd; constdoubleeps
u013738743
·
2015-03-09 21:00
后缀数组
HDU
后缀自动机
4436
str2int
前缀和预处理
spoj 1811 Longest Common Substring (第一道后缀自动机)
后缀数组
可以过。我用后缀自动机做,第一次写后缀自动机,举得和ac自动机相似都是一种状态转移图。参考了大牛的模板自己改了下写出自己的模板。这题将第一个串加入后缀自动机,然后去匹配第二个串。很裸的题目。
My_ACM_Dream
·
2015-03-09 20:00
hdu 4691 Front compression (
后缀数组
+rmq)
明知道水题,就是读不懂题目。#include #include #include #include #include #include #include #include #include usingnamespacestd; #defineB(x)(1=0;i--)SA[--cnt[k1[i]]]=i; for(intd=1,p=1;p=d)k2[p++]=SA[i]-d; for(inti=
My_ACM_Dream
·
2015-03-09 17:00
poj 2758 Checking the Text (
后缀数组
应用)
题意:给出一个串,对这个串进行插入,查询,查询是按照原来串的位置进行查询a,b为开头的后缀的最长公共前缀。题解:的确是一道好题。参考大牛博客#include#include#include#include#include#include#include#include#includeusingnamespacestd;#defineB(x)(1=0;i--)SA[--cnt[k1[i]]]=i;f
My_ACM_Dream
·
2015-03-09 00:58
字符串
字符串—后缀数组
poj 2758 Checking the Text (
后缀数组
应用)
题意:给出一个串,对这个串进行插入,查询,查询是按照原来串的位置进行查询a,b为开头的后缀的最长公共前缀。题解:的确是一道好题。参考大牛博客#include #include #include #include #include #include #include #include #include usingnamespacestd; #defineB(x)(1=0;i--)SA[--cnt[k
My_ACM_Dream
·
2015-03-09 00:00
hdu 2328 Corporate Identity (
后缀数组
应用)
题解:二分长度,然后用
后缀数组
判断是否满足,根据height分组,找出分组中包含n个字符串的后缀的分组。字典序最小也容易处理,直接看代码就好了。
My_ACM_Dream
·
2015-03-08 15:00
[置顶] poj 3581 Sequence (
后缀数组
好题)
题意:给出一个字符串,求这个字符串分成三段并且反转着三段得到字典序最小的序列。题目保证第一个字符最大。题解:题目保证第一个字符最大是非常有用的条件,我们可以用贪心,将字符串倒叙,找到字典序最小的后缀作为第一段,注意最小要字典序是在不会导致有一段是空串的前提下,例如4321明显倒序后最小后缀时123,但是这样不可取,因为如果去123,那么其他两段就是空串了!这是求出了第一段,第二段不能在刚才串的基础
My_ACM_Dream
·
2015-03-08 13:00
poj 1226 Substrings (
后缀数组
应用)
题意:给出n个串,求一个最长的串,使得这个串或是这个串反转后的串出现在n个串中。题解:将每个串反转接到原串后面,用分隔符分开,然后就可以像求最长公共子串那样做了。#include #include #include #include #include #include #include #include #include usingnamespacestd; #defineB(x)(1g; vo
My_ACM_Dream
·
2015-03-07 21:00
URAL 1297 Palindrome
后缀数组
1297.PalindromeTimelimit:1.0secondMemorylimit:64MBThe“U.S.Robots”HQhasjustreceivedaratheralarminganonymousletter.Itstatesthattheagentfromthecompeting«RobotsUnlimited»hasinfiltratedinto“U.S.Robotics”.«
u013532224
·
2015-03-07 20:00
后缀数组
yy浅谈
后缀数组
后缀数组
是一种很优美的数组结构,基本上可以完全替代后缀数,
后缀数组
无论是在内存的占用或者是时间复杂度都和后缀树差不多,但是操作性比后缀树好很多。
后缀数组
可以说是字符串处理的神奇啊!
My_ACM_Dream
·
2015-03-07 14:00
spoj 220 Relevant Phrases of Annihilation (
后缀数组
应用)
题解:这里又用到了后缀的分组,我们首先拼接n个串然后跑一边
后缀数组
,二分长度,接着根据height分组,然后统计每组的后缀所属的串的个数,并且要判断是否存在至少重复两次的子串且不重叠,统计所属串的个数可以用
My_ACM_Dream
·
2015-03-07 14:00
poj 3294 Life Forms (
后缀数组
应用)
题意:给出n个串,求这个n个串中至少是n/2个串的最长公共子串,注意要>n/2.题解:
后缀数组
的应用之一,做法:1、将n个字符串拼接在一起,每个字符串拼接的符号最好是小于所有串的,这样排序以后会跑到开头
My_ACM_Dream
·
2015-03-07 10:00
poj 3415 Common Substrings (
后缀数组
应用)
题意:给出两个串,求着两个串的公共子序列至少是k长度的个位数(允许重复)题解:先是看了国家队论文得到了点启示,然后具体是想出处理的办法,但是操作起来各种不顺,之后参照了别人的代码,了解到了一种和我做法一样的处理方法。启示这题相当于贪心,对于任意两个后缀(分别是A串和B串的),对于这两个后缀,如果最长前缀是L,那么要得到至少是k的长度那么L>=k,于是很容易可以看出这个两个后缀为整个答案贡献了L-k
My_ACM_Dream
·
2015-03-06 20:00
poj 2406 Power Strings (用kmp代替
后缀数组
求解)
题解:算法集合之《
后缀数组
》国家对论文是说用
后缀数组
可以处理复杂度是O(n),但是感觉大材小用了,这题用kmp完全可以解决。
My_ACM_Dream
·
2015-03-04 22:00
spoj 694 Distinct Substrings (
后缀数组
应用)
题意:给出长度为n的串,求这个串中不通的子串个数。题解:首先我们分析,这种题应该从每个子串入手,每个子串肯定是后缀的前缀,所以分析后缀的一些关系。单独分析一个后缀能为不通子串个数贡献多少,如果按照SA的顺序不断计算出后缀,当要加入k这个后缀时,他的长度为n-SA[k],那么他可以贡献出的前缀也就是子串的个数肯定有n-SA[k],但是他和前一个后缀有重叠部分重叠部分的长度便是多计算的子串个数,于是减
My_ACM_Dream
·
2015-03-04 21:00
poj 3261 Milk Patterns (
后缀数组
+二分答案)
题意:给出n个数,求n个数组成的串的子串中满足重复k次并且长度最长。题解:二分枚举长度,然后判断是存在这样的串,判断方法将后缀分组,然后只要判断是否存在这样的组:里面有至少k个后缀。注意,n个数可以为0,所以全部加1。#include #include #include #include #include #include #include #include #include usingnames
My_ACM_Dream
·
2015-03-04 20:00
poj 1743 Musical Theme (
后缀数组
+二分答案)
题意:给出n个数字的串,将这个串后一个减去前一个,所得的串尽心操作。问所得的串最长不重复子串的长度。题解:这种题目很明显没办法直接求得长度,那么可以考虑二分答案判断是否满足条件。我们可以二分得到k,判断是否存在这样的k。对于如何判断,我们可以将后缀根据height的值进行分组,每组的后缀之间的最长公共前缀必须至少为k,这样之后只要找出每组中最大SA值和最小SA的值的差即可。好好理解下,这种做法,值
My_ACM_Dream
·
2015-03-04 17:00
hdu 1403 Longest Common Substring (
后缀数组
模板题)
题解:
后缀数组
搞定。
My_ACM_Dream
·
2015-03-04 13:00
Codeforces 335B Palindrome 鸽巢原理 + DP
种小写英文字母另外就是这个题目中的回文串并不要求在原来的串当中是连续出现的,只需要出现的位置顺序一样即可,并不要求连续大致思路:做练习的时候一眼看标题课描述没看Hint就脑补直接当常见的的连续的回文串来做了....上来就敲了一发
后缀数组
结果发现样例没过然
u013738743
·
2015-03-03 19:00
dp
codeforces
palindrome
鸽巢原理
335B
UVALive 2775 (LA 2775) Hidden Password
后缀数组
题目大意:对于一个字符串定义其one-letterleftcyclicshifts为将其前i(0=L的,在这一区段中找到最小的sa[i]即可细节见代码吧代码如下:Result : Accepted Memory : ?KB Time : 369ms/* *Author:Gatevin *CreatedTime:2015/2/1515:35:05 *FileName:Mononobe_Mitsu
u013738743
·
2015-02-15 16:00
后缀数组
password
hidden
uvalive
la
2775
2775
CodeForces 128B String
后缀数组
或 优先队列维护 求第K小子串
题目大意:给出一个长度不超过10^5的字符串求其所有子串当中字典序排行第K(K #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ
u013738743
·
2015-02-14 20:00
String
优先队列
后缀数组
codeforces
128B
第K子串
UVA 10829 L-Gap Substrings
后缀数组
题目大意:现在定义如果一个字符串S可以被写成UVU的形式(U,V是两个非空字符串),且V的长度是L,那么串S是L-Gap串一个字符串可能既是L1-Gap串又是L2-Gap串,现在给出一个字符串S(其长度不超过50000)给定整数G,求给出的字符串的所有子串中G-Gap字符串的数量(如果多个子串相同但是出现位置不同视为不同子串)大致思路:刚开始我想的是枚举G-Gap子串可能的启示位置然后根据位置i,
u013738743
·
2015-02-13 15:00
后缀数组
Substrings
uva
L-Gap
10829
后缀数组
(重复次数最多的最长重复子串)—— POJ 3693
对应POJ题目:点击打开链接MaximumrepetitionsubstringTimeLimit: 1000MS MemoryLimit: 65536KTotalSubmissions: 7546 Accepted: 2267DescriptionTherepetitionnumberofastringisdefinedasthemaximumnumber R suchthatthestring
u013351484
·
2015-02-12 14:00
URAL 1517 Freedom of Choice
后缀数组
入门
1517.FreedomofChoiceTimelimit:2.0secondMemorylimit:64MBBackgroundBeforeAlbanianpeoplecouldbearwiththefreedomofspeech(thisstoryisfullydescribedintheproblem "Freedomofspeech"),anotherfreedom-thefreedomo
u013532224
·
2015-02-12 09:00
后缀数组
UVALive 4513 (LA 4513) Stammering Aliens
后缀数组
或 hash
题目大意:白书例题给出一个整数m>=1和一个字符串(m #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include usingnames
u013738743
·
2015-02-11 21:00
hash
后缀数组
uvalive
la
4513
4513
Stammering
Aliens
后缀数组
(SuffixArray) 学习笔记
后缀数组
前面有介绍过后缀树,后缀树对于我们针对某些字符串的处理使得如鱼得水,美中不足的是后缀树的代码实现复杂,只能让很多人望而却步。
dreamhougf
·
2015-02-11 16:22
字符串模式匹配归档
【
后缀数组
】
听说暴力优化0ms通关。但是这里要说的显然不是暴力的方法~还是喜欢中等大小的字体啦啦啦~我知道论文上有讲,但是如果论文上的看懂了,你一定不会在百度搜这个了……我反正当时没看的很明白,大神的解释语言十分精简,精简到了,对于弱B的我,我就看不懂了……题目大意:一个字符串T,他可能里面有一段子串S, S由一个S的子串P重复K次而成。比如qwertyabcabcabc 这个串,他后面那部分abcabcab
baidu_23081367
·
2015-02-09 20:00
URAL 1297 Palindrome
后缀数组
或 Manacher 求最长回文子串
题目大意:就是给出一个长度不超过1000个只包含大小写英文字母的字符串,输出其最长回文子串大致思路:解法一:首先很容易想到用将该字符串本身反转之后与自己连接起来,中间用一个未出现的字符隔开,求出
后缀数组
刚开始想的是枚举回文串长度
u013738743
·
2015-02-09 19:00
后缀数组
palindrome
Manacher
回文串
ural
1297
URAL 1517 Freedom of Choice
后缀数组
题目大意:就是对于给出两个长度都为N的只包含大写字母的串求其最长公共子串存在多个长度相同的的串时输出任意一个大致思路:就是一个简单的
后缀数组
的题...很简单了...细节见代码代码如下:Result :
u013738743
·
2015-02-09 16:00
后缀数组
of
freedom
choice
ural
1517
SPOJ 687 REPEATS Repeats
后缀数组
+ RMQ预处理
题目大意:对于给出的字符串(长度=1,所以对于repetitionnumber为1的只需要找到字典序最小的那个字母即可,那么我们只考虑repetitionnumber>=2的情况,如果每一个循环节的长度为len,那么在原字符串S中,S[i*len]与S[(i+1)*len]一定会被包含在答案的子串当中那么枚举可能的答案的循环节的长度,然后枚举可能的位置,对于每一组可能被包含的位置S[i*len],
u013738743
·
2015-02-09 15:00
后缀数组
RMQ
spoj
repeats
687
SPOJ 220 PHRASES Relevant Phrases of Annihilation
后缀数组
题目大意:就是现在给出T组测试数据(T #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include usingnamespacestd;
u013738743
·
2015-02-09 15:00
后缀数组
spoj
220
PHRASES
SPOJ 705 SUBST1 New Distinct Substrings
后缀数组
题目大意:给出一个字符串(长度 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include usingnamespacestd; con
u013738743
·
2015-02-09 13:00
后缀数组
spoj
705
SUBST1
SPOJ 694 DISUBSTR Distinct Substrings
后缀数组
题目大意:对于给出的字符串(长度不超过1000)求其不同的子串的个数大致思路:就是一个简单的height数组性质的利用, 如果每个子串我们用从位置j开始且长度为k来表示不同的子串的话则一个height[i]值说明表示从位置sa[i-1]开始的和sa[i]开始的长度为k #include #include #include #include #include #include #include #i
u013738743
·
2015-02-09 13:00
distinct
后缀数组
Substrings
spoj
694
DISUBSTR
POJ 3693 Maximum repetition substring
后缀数组
+ RMQ预处理
题目大意:定义一个字符串的repetitionnumber表示这个字符串某个重复出现的子串的出现次数,每次出现不重合比如abababab是ab重复4次其repetitionnumber是4,而ababa包含两个有重叠的‘aba’,只能算repetitionnumber是1(1个‘ababa')给出一个长度不超过100,000的字符串,求出这个字符串的所有子串中repetitionnumber最大的
u013738743
·
2015-02-09 13:00
poj
后缀数组
RMQ
3693
SPOJ 705 子串个数
后缀数组
依然是论文里的题目……其中注意,答案要用LONGLONG保存……被坑了一下然后才过#include #include #include usingnamespacestd; constintmax_n=50000+10; chars[max_n]; intslen; inta[max_n],wa[max_n],wb[max_n],wv[max_n],tub[max_n]; intsa[max_
baidu_23081367
·
2015-02-08 23:00
POJ 3261
后缀数组
可重叠的,但是要重叠K次的 最长公共前缀最长是多少
论文上的题目刷的还是蛮快的了,自从
后缀数组
越写越顺……再也不用担心这个那个写错了~~~今晚一定要刷完论文上的题目,这样明天就可以继续去做SPLAY的题目拉~~~#include #include #include
baidu_23081367
·
2015-02-08 22:00
POJ 1743
后缀数组
也就是吧所有数字的差保存起来,求
后缀数组
,然后二分答案即可。 记住:答案小于5,算无解。
baidu_23081367
·
2015-02-08 21:00
UVA 1297 最长回文串【裸】
这次终于让我
后缀数组
不TLE了……哇哇哇哇哇!
baidu_23081367
·
2015-02-08 19:00
反复折腾了POJ上的
后缀数组
折腾了最长回文串,和模式串的匹配问题。发现程序慢如狗!POJ3461TLE#include #include constintmax_strlen=1200000+10; charpattern[max_strlen],text[max_strlen]; intsa[max_strlen],tub[max_strlen],wa[max_strlen],wb[max_strlen],wv[max
baidu_23081367
·
2015-02-08 17:00
后缀数组
(最长回文子串)——ural 1297
对应ural题目:点击打开链接PalindromeTimeLimit: 1000MS MemoryLimit: 65536KB 64bitIOFormat: %I64d&%I64uSubmit StatusDescriptionThe“U.S.Robots”HQhasjustreceivedaratheralarminganonymousletter.Itstatesthattheagentfro
u013351484
·
2015-02-08 15:00
TYVJ 1860
后缀数组
裸题
大数据下测试
后缀数组
的SA和HEIGHT数组的正确性的题目。也决定了我今后的模板。
baidu_23081367
·
2015-02-08 12:00
poj 2774
后缀数组
(最长连续子串)
思路:
后缀数组
。有关
后缀数组
的概念可以参见罗穗骞的一篇文章。
dumeichen
·
2015-02-05 22:00
uva10526 - Intellectual Property
后缀数组
ProblemA:IntellectualPropertyTDPInc.hasdecidedtosueJCNInc.forcopyrightinfringement.Tothisend,TDPwishestofind infringingsegments withinJCN'scodebase,toshowtoselectedmediarepresentatives.SinceTDPhasfire
corncsd
·
2015-02-05 18:00
POJ 3415 Common Substrings
后缀数组
+ 单调栈维护
B[j,k]同理对于给定的字符串A,B和整数K,求使得A[i,k]==B[j,k]的三元组(i,j,k)的数量,其中要求k>=K大致思路:很容易想到先将两个字符串连接起来中间用一个没有出现的值隔开,求
后缀数组
首先如果我们只考虑对于给定的
u013738743
·
2015-02-05 15:00
poj
后缀数组
common
Substrings
单调栈
3415
uva10829 - L-Gap Substrings
后缀数组
+RMQ
ProblemJL-GapSubstringsInput:StandardInputOutput:StandardOutputIfastringisintheformUVU,whereUisnotempty,andVhasexactlyLcharacters,wesayUVUisanL-Gapstring.Forexample,abcbabcisa1-Gapstring.xyxyxyxyxyisb
corncsd
·
2015-02-04 20:00
后缀数组
(不相同的子串个数)——SPOJ 705
对应SPOJ题目:点击打开链接DistinctSubstringsTimeLimit: 159MS MemoryLimit: Unknown 64bitIOFormat: %lld&%lluSubmit StatusDescriptionGivenastring,weneedtofindthetotalnumberofitsdistinctsubstrings.InputT-numberoftes
u013351484
·
2015-02-04 19:00
后缀数组
(不可重叠最长重复子串)——POJ 1743
对应POJ题目:点击打开链接MusicalThemeTimeLimit: 1000MS MemoryLimit: 30000KTotalSubmissions: 19985 Accepted: 6835DescriptionAmusicalmelodyisrepresentedasasequenceofN(1 #include #include #defineMS(x,y)memset(x,y,s
u013351484
·
2015-02-04 17:00
上一页
28
29
30
31
32
33
34
35
下一页
按字母分类:
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
其他