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-后缀数组
POJ 3294 Life Forms(
后缀数组
)
题目链接:http://poj.org/problem?id=3294 题意:给定n个字符串,求出一个尽可能长的子串,使得该子串至少出现在n/2+1个给定的串中。 思路:将n个字符串连起来,二分答案,将后缀分成若干组,判断每组的后缀是否出现在不小于n/2+1个原串中。 int r[N],sa[N],wa[N],wb[N],wd[N],rank[N],h[N]; int
·
2015-11-08 11:14
form
SPOJ 220 Relevant Phrases of Annihilation(
后缀数组
)
题目链接:http://www.spoj.pl/problems/PHRASES/ 题意:给定n个字符串,求在每个字符串中至少出现两次且不重叠的最长字串。 思路:先将n个字符串连起来,中间用不相同的且没有出现在字符串中的字符隔开,求sa和height数组。然后二分答案,将后缀分组。判断的时候,要看是否有一组后缀在每个原来的字符串中至少出现两次,并且在每个原来的字符串中,后缀的起始位置的最大值与
·
2015-11-08 11:13
后缀数组
HDU 4416 Good Article Good sentence(
后缀数组
)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4416 题意:给出一个串A和多个串B。求A有多少不重复的子串使得这些子串不是B中任意一个串的子串? 思路:将A和B拼在一起,求得这个串有多少个不同的子串X,将所有的B拼接在一起,求得有多少个不同的子串Y,答案为X-Y。在求不同的子串时,设串的长度为len,首先每个后缀将会贡献出len-sa[i]+1
·
2015-11-08 11:12
后缀数组
【hdu3065】病毒侵袭持续中
昨天晚上听说
后缀数组
好像可以完美替代AC自动机(事实上是不行的) 于是就拿出
·
2015-11-08 11:00
HDU
LA 4513 Stammering Aliens
一种是用哈希lcp法,另一种用
后缀数组
求解。
zhoujl25
·
2015-11-08 01:00
后缀数组-哈希lcp算
poj 1743 Musical Theme(
后缀数组
)
题意:有N(1 #include #include #include usingnamespacestd; constintMAXN=20010; intsa[MAXN];//SA数组,表示将S的n个后缀从小到大排序后把排好序的 //的后缀的开头位置顺次放入SA中 intt1[MAXN],t2[MAXN],c[MAXN];//求SA数组需要的中间变量,不需要赋值 intrank[MAXN],he
u014552756
·
2015-11-07 15:00
hdu 3553 Just a String (
后缀数组
)
hdu 3553 Just a String (
后缀数组
) 题意:很简单,问一个字符串的第k大的子串是谁。 解题思路:
后缀数组
。先预处理一遍,把能算的都算出来。
·
2015-11-07 12:54
String
后缀数组
后缀数组
:
后缀数组
SA是一个一维数组,它保存1..n的某个排列 SA[1 ] ,SA[2] ,…… ,SA[n] ,并且保证 Suffix(SA[i]) < Suffi
·
2015-11-07 12:38
后缀数组
POJ1743---Musical Theme (
后缀数组
+二分)
题意 :求最长不相交重复子串的长度。。 可以先求出LCP,,对于长度 二分出答案。。(竟然不会写二分) 1 #include <set> 2 #include <map> 3 #include <cmath> 4 #include <ctime> 5 #include <queue> 6 #incl
·
2015-11-07 12:51
theme
poj 3415 Common Substrings(
后缀数组
| 后缀自动机)
题目链接:poj3415CommonSubstrings代码-
后缀数组
#include #include #include #include #include usingnamespacestd; typedeflonglongll
u011328934
·
2015-11-06 21:00
扩展KMP
方法1:暴力算法,时间复杂度O(n^2); 方法2:
后缀数组
,利用height的性质可以求出该问题,时间复杂度为O(n),但是预处理为O(nlogn) 方法3:扩展KMP,充分利用已经匹配过的性质,
·
2015-11-03 20:13
KMP
后缀数组
的应用
height[i] 表示排名第i的后缀和排名第i-1的后缀的最长公共前缀,也即sa[i]与sa[i-1]的最长公共前缀。 1、给定一个字符串,询问任意两个后缀的最长公共前缀,假设询问suffix(i)和suffix(j)的最长公共前缀,且rank[i] < rank[j],那么suffix(i)和suffix(j)的最长公共前缀的 长度为height[rank[i]+1],height[
·
2015-11-03 20:12
后缀数组
POJ 1226 Substrings (
后缀数组
)
题目地址:POJ1226将每一个字符串反转连接一次,再把所有字符串都连接起来,然后二分,找最大长度。注意与反转字符串之间不能直接相连。代码如下:#include #include #include #include #include #include #include #include #include #include #include usingnamespacestd; #defineLLl
u013013910
·
2015-11-03 12:00
编程
ACM
后缀数组
算法与数据结构
POJ 3294 Life Forms (
后缀数组
)
题目地址:POJ3294把所有字符串连在一块,并用一个从未出现的字符隔开,注意这个每两个之间的用来隔开的字符也不能重复,除非对1个的时候进行特判。然后二分长度,然后判断这个长度下能否有出现次数超过n/2次的,可以对其分组然后hash判断。找出最大长度之后,再用同样的方法从头找一遍,然后把符合要求的输出、代码如下:#include #include #include #include #includ
u013013910
·
2015-11-02 23:00
编程
ACM
poj
后缀数组
算法与数据结构
POJ 1743 Musical Theme (
后缀数组
)
题目地址:POJ1743二分长度,由于相似的都挨在一块,所以需要判断大于等于mid的区间的位置最左端与最右端是否大于mid.代码如下:#include #include #include #include #include #include #include #include #include #include #include usingnamespacestd; #defineLLlonglo
u013013910
·
2015-11-02 21:00
编程
ACM
后缀数组
算法与数据结构
SPOJ 705 New Distinct Substrings (
后缀数组
)
后缀数组
模板题。由于height数组是指与排名上一个的公共前缀,所以重复的个数是height[i]个,考虑当前这个字母所构成的子串的贡献即为n-sa[i]-height[i],然后累加即可。
u013013910
·
2015-11-02 19:00
编程
ACM
后缀数组
算法与数据结构
HDU 5030 Rabbit's String
思路:首先用
后缀数组
求出所有子串。二分答案串,判定是否存在一种分法满足要求。对于答案串A,设A起始位置所
·
2015-11-02 19:44
String
[TJOI2013]单词
可以用
后缀数组
来做。 我说以下ac自动机的做法: 加入每个单词,对路径上的所有点累计访问次数。 构建fail指针。 把每个节点的访问次数累加到它的fail上。具体有代码。。
·
2015-11-02 19:49
单词
Ural 1297 Palindrome (
后缀数组
)
题目地址:Ural1297
后缀数组
模板题。把字符串倒过来接到字符串后面,并在中间加一个从未出现的字符。然后用
后缀数组
就可以了。
u013013910
·
2015-11-02 19:00
编程
ACM
后缀数组
算法与数据结构
POJ2774 Long Long Message——
后缀数组
——pku2774
也是
后缀数组
的模板题吧。 代码: Program poj2774;//By_Thispoet Const maxn=200005; Var i,j,k,m,n,p,q,sum,
·
2015-11-02 17:38
message
后缀数组
Pascal代码实现
后缀数组
,真是个麻烦的东西。 题目大意如下:给定一个长度在5000以内的字符串,求出出现过两次或两次以上的最长字串(保证唯一解)。
·
2015-11-02 17:24
pascal
SPOJ 694 && SPOJ 705 (不重复子串个数:
后缀数组
)
题意 给定一个字符串,求它的所有不重复子串的个数 思路 一个字符串的子串都必然是它的某个后缀的前缀。对于每一个sa[i]后缀,它的起始位置sa[i],那么它最多能得到该后缀长度个子串(n-sa[i]个),而其中有height[i]个是与前一个后缀相同的,所以它能产生的实际后缀个数便是n-sa[i]-height[i]。遍历一次所有的后缀,将它产生的后缀数加起来便是答案。 代码 [cp
·
2015-11-02 17:12
后缀数组
SPOJ 694 && SPOJ 705 (不重复子串个数:
后缀数组
)
题意 给定一个字符串,求它的所有不重复子串的个数 思路 一个字符串的子串都必然是它的某个后缀的前缀。对于每一个sa[i]后缀,它的起始位置sa[i],那么它最多能得到该后缀长度个子串(n-sa[i]个),而其中有height[i]个是与前一个后缀相同的,所以它能产生的实际后缀个数便是n-sa[i]-height[i]。遍历一次所有的后缀,将它产生的后缀数加起来便是答案。 代码 [cp
·
2015-11-02 17:51
后缀数组
[hdu3336]kmp(
后缀数组
)
题意:求字符串s的所有前缀出现次数之和。 http://www.cnblogs.com/jklongint/p/4446117.html 思路:用kmp做,简单且效率高。以前缀结尾的位置分类,令dp[i]为以结尾位置在i的前缀数量,那么dp[i] = cnt(j)(j~i是前缀),而由kmp的next函数的转移性质,可得如下递推方程:dp[i] = dp[next[i]] + 1,把这个递推式
·
2015-11-02 16:39
后缀数组
[whu1564]
后缀数组
problem_id=1564 思路:先把串复制一遍,在末尾补个标记,
后缀数组
跑一下,扫一遍就ok了(过滤后缀在后半部分的)。
·
2015-11-02 16:38
后缀数组
【2012百度之星/资格赛】H:用户请求中的品牌 [
后缀数组
]
时间限制: 1000ms 内存限制: 65536kB 描述 馅饼同学是一个在百度工作,做用户请求(query)分析的同学,他在用户请求中经常会遇到一些很奇葩的词汇。在比方说“johnsonjohnson”、“duckduck”,这些词汇虽然看起来是一些词汇的单纯重复,但是往往都是一些特殊
·
2015-11-02 15:05
后缀数组
后缀数组
--总结
后缀数组
:SA是一个一维数组。将S的后缀从小到大排序后,后缀的开头位置顺次放入SA。
·
2015-11-02 15:47
后缀数组
字符串:KMP Eentend-Kmp 自动机 trie图 trie树 后缀树
后缀数组
涉及到字符串的问题,无外乎这样一些算法和数据结构:自动机 KMP算法 Extend-KMP 后缀树
后缀数组
trie树 trie图及其应用。
·
2015-11-02 11:31
后缀数组
POJ-3693 Maximum repetition substring
后缀数组
题目链接:http://poj.org/problem?id=3693 求字符串的重复次数最多的且字典序最小的字串。 很不错的题目。罗穗骞大牛论文的模板题,摘了Neo / Add ~0U>>1大牛的详细题解,如下: 首先求第一问最大重复数。从N的范围来看O(N^2)虽不靠谱,但是起码能带来些有用的启示。方法有二,一是枚举开头位置求重复长度;二是枚举重复长度求开头位
·
2015-11-02 11:51
substring
后缀数组
(基数排序)的具体分析
我看
后缀数组
,思想很容易懂,但是基数排序那边我确实理解了很久才理解,现在我写一份自己可以看懂的具体分析。
·
2015-11-02 10:17
后缀数组
数据结构之
后缀数组
概述
后缀数组
是一种解决字符串问题的有力工具。相比于后缀树,它更易于实现且占用内存更少。在实际应用中,
后缀数组
经常用于解决字符串有关的复杂问题。 本文大部分内容摘自参考资料[1][2]。 2.
·
2015-11-02 10:45
数据结构
后缀数组
后缀数组
是根据一个给定的字符串,然后取这个字符串的所有后缀,然后将后缀排序,生成两个数组,sa数组和rank数组 sa[i]存的是排名第i的字符串下标 rank[i]存的是以下标i开头的后缀的排名&
·
2015-11-02 09:15
后缀数组
后缀数组
在夏令营期间学习了作为一个字符串处理神器的
后缀数组
。
·
2015-11-01 14:25
后缀数组
[字符串统计] 字符串(八) {
后缀数组
的应用(下)}
{ 承上半部分 继续讨论
后缀数组
的应用 这一部分难度较大 需要对
后缀数组
有一个综合的了解 主要内容是借助Height数组解决问题 即Height分析 } 重贴一下关于Height
·
2015-11-01 14:01
后缀数组
[最优化子串] 字符串(七) {
后缀数组
的应用(上)}
{ 承接上一篇 会构造
后缀数组
之后 还需要讨论如何应用它 这里分重点分析
后缀数组
的应用 } 〇.
·
2015-11-01 14:01
后缀数组
[Pku 2774] 字符串(六) {
后缀数组
的构造}
{ 从这一篇开始介绍
后缀数组
一个强大的字符串处理工具 可以先研读罗穗骞的论文
后缀数组
——处理字符串的有力工具 再行阅读本文 本文仅作参考和补充 } 字符串的后缀很好理解
·
2015-11-01 14:00
后缀数组
SPOJ 694 (
后缀数组
) Distinct Substrings
将所有后缀按照字典序排序后,每新加进来一个后缀,它将产生n - sa[i]个前缀。这里和小罗论文里边有点不太一样。 height[i]为和字典序前一个的LCP,所以还要减去,最终累计n - sa[i] - height[i]即可。 1 #include <cstdio> 2 #include <cstring> 3 #include <algor
·
2015-11-01 14:35
substring
POJ 2774 (
后缀数组
最长公共字串) Long Long Message
用一个特殊字符将两个字符串连接起来,然后找最大的height,而且要求这两个相邻的后缀的第一个字符不能在同一个字符串中。 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 6 const int max
·
2015-11-01 14:35
message
POJ 3693 (
后缀数组
) Maximum repetition substring
找重复次数最多的字串,如果有多解,要求字典序最小。 我也是跟着罗穗骞菊苣的论文才刷这道题的。 首先还是枚举一个循环节的长度L,如果它出现两次的话,一定会包含s[0], s[L], s[2L]这些相邻两个之间。 然后枚举相邻的两个,尽可能的向前和向后延伸,假设延伸长度为k,则重复次数为k / L + 1 向后延伸很自然的就是求一次LCP,这个用RMQ预处理一下就可以O(1)查询。 向前延伸
·
2015-11-01 14:34
substring
POJ 3261 (
后缀数组
二分) Milk Patterns
这道题和UVa 12206一样,求至少重复出现k次的最长字串。 首先还是二分最长字串的长度len,然后以len为边界对height数组分段,如果有一段包含超过k个后缀则符合要求。 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespa
·
2015-11-01 14:33
Pattern
UVa 12206 (字符串哈希) Stammering Aliens
也许这道题的正解是
后缀数组
,但Hash做法的优势就是编码复杂度大大降低。
·
2015-11-01 14:32
字符串
POJ 1743 (
后缀数组
二分) Musical Theme
看来对height数组进行分段确实是个比较常用的技巧。 题意: 一个主题是可以变调的,也就是如果这个主题所有数字加上或者减少相同的数值,可以看做是相同的主题。 一个主题在原串中至少要出现两次,而且一定要有不相交的两次。 因为说了可以变调,所以我们处理每相邻两项的差值,这样就得到n-1个数字。然后找最大的不相交重复的连续子序列即可。 找这样的子序列还是要二分子序列的长度k,然后根据k对he
·
2015-11-01 14:28
theme
UVa 11107 (
后缀数组
二分) Life Forms
利用height值对后缀进行分组的方法很常用,好吧,那就先记下了。 题意: 给出n个字符串,求一个长度最大的字符串使得它在超过一半的字符串中出现。 多解的话,按字典序输出全部解。 分析: 在所有输入的字符串后面加一个原串中没有的且互不相同的字符,然后将新得到的n个字符串拼接成一个长的字符串。(为什么要加互不相同的分割字符,这里始终想不明白) 首先二分最大公共字串的长度p。扫描一遍hei
·
2015-11-01 14:27
form
poj3693(
后缀数组
)
http://poj.org/problem?id=3693 题意:给出一串字符,需要求这串字符中的最长重复子串,要是有多个,输出字典序最小的......... 我自己的一些想法:这个思路我一开始倒是没有看明白,慢慢的编下去,才懂了它到底是如何操作的......其实就是枚举多少个字符会匹配,然后求出它们的height值,再用这个值去除以长度,得到有多少个循环........
·
2015-11-01 14:15
后缀数组
poj1743(
后缀数组
)
http://poj.org/problem?id=1743 题意:给出一串字符,求不重合的最长重复子串.......... 我自己的一点想法:编完后发现,其实就是将height值分组,然后记录在二分答案时满足height值>=p的sa[i]的最大最小值,然后要是最大值减去最小值会>=p,这就说明两个子串的lcp值>=p并且它们的坐标也相差>=p,就自然满足题意
·
2015-11-01 14:15
后缀数组
《黑书》
后缀数组
学习笔记......
最近看黑书看到数据结构之
后缀数组
了,以前没有搞过
后缀数组
,初学起来感觉比较难,网上参考了两种
后缀数组
学习笔记,以及罗穗骞倍增算法代码,这里附上链接:http://tieba.baidu.com/f?
·
2015-11-01 14:13
学习笔记
HDU-4552 怪盗基德的挑战书 KMP |
后缀数组
| 暴力
比赛的时候使用
后缀数组
写的,后来比完后发现KMP+DP完全可以搞,当时沙茶了- -。
·
2015-11-01 14:04
后缀数组
poj2774
分析:一道
后缀数组
的题,构造
后缀数组
有两种算法,dc3和倍增,效率分别为O(n)和O(nlogn),但前者的实现较困难。
·
2015-11-01 13:51
poj
LA 6856 Circle of digits 解题报告
题目链接 先用
后缀数组
给串排好序。
·
2015-11-01 12:06
git
后缀数组
height 数组的构建
http://churuimin425.blog.163.com/blog/static/34129877201141005542104/ 先转一个
后缀数组
的简单总结:
后缀数组
就是将字符串所有后缀排序后的数组
·
2015-11-01 12:23
height
上一页
21
22
23
24
25
26
27
28
下一页
按字母分类:
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
其他