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
——后缀数组
(hash二分 or
后缀数组
)
问题套了一个斐波那契数,归根结底就是要求对于所有后缀s[i...n-1],所有前缀在其中出现的总次数。我一开始做的时候想了好久,后来看了别人的解法才恍然大悟。对于一个后缀来说 s[i...n-1]来说,所有与它匹配的前缀必然是和 s[i+1...n-1] s[i+2...n-1] ....s[n-1..n-1]里的前缀匹配的,因而如果我们定义一个num[i]表示的是后缀s[i...n-
·
2015-11-12 19:58
String
URAL 1297
后缀数组
:求最长回文子串
然后才知道自己写的
后缀数组
对这个回文子串有bug,然后就不知道怎么改了。
·
2015-11-12 19:41
后缀数组
[JSOI2008 Prefix火星人]
================================================================================= [分析]:一听最长公共前缀马上想到
后缀数组
·
2015-11-12 17:44
2008
HDU5008 Boring String Problem(
后缀数组
)
练习一下字符串,做一下这道题。 首先是关于一个字符串有多少不同子串的问题,串由小到大排起序来应该是按照sa[i]的顺序排出来的产生的。 好像abbacd,排序出来的后缀是这样的 1---abbacd 第一个串产生的6个前缀都是新的子串 2---acd 第二个串除了和上一个串的前缀1 3-1=2
·
2015-11-12 16:15
String
poj 2299 树状数组求逆序数+离散化
id=2299 最初做离散化的时候没太确定可是写完发现对的---由于
后缀数组
学的时候,,这样的思维习惯了吧 1、初始化as[i]=i;对as数组依照num[]的大小间接排序 2、bs[as[i]
·
2015-11-12 16:02
树状数组
poj - 2774 - Long Long Message
id=2774 ——>>
后缀数组
!
后缀数组
!~从LJ的《训练指南》,到许智磊的论文+PPT,吉大的模版,学长的博客,这路还真不容易走。。。
·
2015-11-12 14:23
message
POJ 1743 (
后缀数组
+不重叠最长重复子串)
在当年
后缀数组
还不是热门的时候,这题确实是神题。 首先对于旋律变调
·
2015-11-12 13:39
后缀数组
POJ 2217 (
后缀数组
+最长公共子串)
解题思路:
后缀数组
解法是这类问题的模板解法。 对于n个串的最长公共子串,这要把这些串连在一起,中间用"$"这类的特殊符号分隔一下。
·
2015-11-12 13:39
后缀数组
spoj 705 求不同子串的个数(
后缀数组
)
http://www.spoj.com/problems/SUBST1/ 题意:给定一个字符串,求不相同的子串的个数。 解题思路:对于一个后缀sa[k],它产生了n-sa[k]个前缀,减去height[k]个相同的前缀(与前一个比较),则产生了n-sa[k]-height[k]个子串。累加后即结果。 View Code 1 /* 2 *Author: Zhaof
·
2015-11-12 12:28
后缀数组
The Problem to Slow Down You(Palindromic Tree)
处理字符串有许多常用的工具,像
后缀数组
,后缀自动机,AC自动机
·
2015-11-12 12:01
tree
[置顶]
后缀数组
练习题
/****
后缀数组
模版****/ #define F(x)((x)/3+((x)%3==1?0:tb)) //F(x)求出原字符串的suffix(x)在新的字符串中的起始位置 #define
·
2015-11-12 11:43
后缀数组
算法设计 - LCS 最长公共子序列&&最长公共子串 &&LIS 最长递增子序列
最长公共子串用动态规划可实现O(n^2)的时间复杂度,O(n^2)的空间复杂度;还可以进一步优化,用
后缀数组
的方法优化成线性时间O(nlogn);空间也可以用其他方法优化
·
2015-11-12 11:14
算法
POJ 2774 Long Long Message&&HDU 1403 Longest Common Substring&&COJ 1203
后缀数组
的买1送2题。。。 HDU的那题数据实在是太水了,后来才发现在COJ和POJ上都是WA。。原因在一点:在建立sa数组的时候里面的n应该是字符串长度+1.。。。
·
2015-11-12 09:31
substring
后缀数组
的运用之求不重叠最长重复子串
什么是不重叠最长子串呢,就是一个串中至少出现两次,又不重叠的子串中的最长的,比较绕口。 解决这个问题的关键还是利用height 数组。把排序后的后缀分成若干组,其中每组的后缀之间的height 值都不小于k。然后找出各个组的后缀的sa值的最大最小值max,min,如果存在 max-min >= k,那么就存在长度为k的不重叠子串,因为根据LCP定理,每个组中的height值都不小于
·
2015-11-12 09:17
后缀数组
后缀数组
运用之求多个字符串最长公共子串
求若干个字符串的最长公共子串,是
后缀数组
一个简单的运用,为说明简单起见,设要求的字符串个数是两个。
·
2015-11-12 09:16
后缀数组
后缀数组
的构建
后缀数组
相对后缀树来说比较容易构建,应用也比较广泛,和lcp,RMQ问题联合运用在各种竞赛中叶比较热门,究竟什么是
后缀数组
,怎么构建和应用,是像我这样的初学者遇到的最大的问题。
·
2015-11-12 09:16
后缀数组
hdu 3518 Boring counting(
后缀数组
+height分组)
题意:求重复但不重叠的子串数。 解题思路:height分组。枚举长度L,将height数组进行分组,使得每一组的height都大于L,若有一组的最大的sa值和最小的sa值之差大于L,则说明该组内存在一个符合条件的子串。 View Code 1 /* 2 *Author: Zhaofa Fang 3 *Created time: 2013-05-06-1
·
2015-11-11 19:51
height
2014-2015学习计划
目前已学习: 70 等待学习: 25 1: 高级数据结构(17) 线段树,并查集,
后缀数组
,树状数组,串的模式匹配(KMP),字典树
·
2015-11-11 16:50
学习
[poj][3261][Milk Patterns]
id=3261 第一道
后缀数组
。二分答案,然后遍历height数组,判断该答案是否出现次数大于k次。
·
2015-11-11 15:06
Pattern
后缀数组
小结
后缀数组
的学习不得不告一段落了,还有好多要学的东西呢,最重要的是没有那么多时间了,人生苦短啊!
·
2015-11-11 15:35
后缀数组
POJ 1226 Substrings(
后缀数组
)
题目链接:http://poj.org/problem?id=1226 题意:给定n个串。求一个最长的串,使得这个串或者其反串在每个串中都出现过? 思路:二分。 int r[N],sa[N],wa[N],wb[N],wd[N],rank[N],h[N]; int cmp(int *r,int a,int b,int len) { return r[a]==r[b]
·
2015-11-11 14:00
substring
POJ 3729 Facer’s string(
后缀数组
)
题目链接:http://poj.org/problem?id=3729 题意:给出两个数字串A和B以及K。求A有多少个长度为K的子串同时是B的子串且这个子串加上在A中后面一个数字时不是B的子串? 思路:统计大于等于K的减去大于等于K+1的。 int r[N],sa[N],wa[N],wb[N],wd[N],rank[N],h[N]; int cmp(int *r,int a,
·
2015-11-11 14:59
String
HDU 4029 Distinct Sub-matrix(
后缀数组
)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4029 题意:给定一个n*m的字母矩阵。求有多少个不同的子矩阵? 思路:枚举列数w,hash[i][j]保存第i行从第j列开始宽度为w的串的哈希值,然后以列为串,也就是有m-w+1个串建立自动机。求不同子串就是宽度为w时的不同的矩阵个数。 int r[N],sa[N],wa[N],wb[
·
2015-11-11 14:59
distinct
HDU 2328 Corporate Identity(
后缀数组
)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2328 题意:给出n个串,求n个串的最长的字典序最小的公共子串? 思路:二分。 int r[N],sa[N],wa[N],wb[N],wd[N],rank[N],h[N]; int cmp(int *r,int a,int b,int len) { return r[a
·
2015-11-11 14:58
entity
HDU 4080 Stammering Aliens(
后缀数组
)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4080 题意:给出一个串s,求s的一个最长子串t,使得t在s中至少出现m次? 思路:二分。分组。 int r[N],sa[N],wa[N],wb[N],wd[N],rank[N],h[N]; int cmp(int *r,int a,int b,int len) { r
·
2015-11-11 14:57
后缀数组
HDU 3518 Boring counting(
后缀数组
)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3518 题意:给出一个串。求至少出现两次且不重叠的子串的个数? 思路:求sa和h。枚举长度。 int r[N],sa[N],wa[N],wb[N],wd[N],rank[N],h[N]; int cmp(int *r,int a,int b,int len) { ret
·
2015-11-11 14:56
count
WHU 1084 连续技(
后缀数组
)
题目链接:http://acm.whu.edu.cn/land/problem/detail?problem_id=1084 题意:给出一个数列,找出一个最长的长度大于1的连续子列,使得这个子列出现的次数大于1? 思路:求sa和h。二分答案。 int r[N],sa[N],wa[N],wb[N],wd[N],rank[N],h[N]; int cmp(int *r,int a
·
2015-11-11 14:54
后缀数组
KMPmatch 字符串模式匹配
O(m+n) 计算
后缀数组
时,子串进行的也是模式匹配。
·
2015-11-11 12:34
match
后缀数组
模板
#include <string.h> #include <stdio.h> #include <stdlib.h> #define maxn 1005 int r[maxn]; int wa[maxn], wb[maxn], wv[maxn], ws[maxn]; int sa[maxn], rank[maxn], height[maxn]
·
2015-11-11 12:33
后缀数组
USACO 5.1 music theme
听说可以用
后缀数组
,orz。。还不会= =, 偶用的傻傻的DP。。
·
2015-11-11 12:28
USACO
POJ 3415 Common Substrings
于是我们可以将两个串连起来, 中间加个奇葩的分隔符, 做一遍
后缀数组
,
·
2015-11-11 11:06
substring
POJ 3294 Life Forms
于是学习了
后缀数组
. 简单说一下
后缀数组
, 它把长为L的字符串的L个后缀排序了, sa[i]记录排第i名的后缀是哪一个, rank[i]记录i这个后缀
·
2015-11-11 11:05
form
POJ 1743 Musical Theme
标准做法当然是
后缀数组
, 但我用哈希做的. 明显答案可以二分, 二分答案M之后, 从左到右维护长为M的子串的哈希值, 并记录某个哈希值最早出现的下标位置, 这
·
2015-11-11 11:03
theme
hdu4416
后缀数组
前段时间好好学了一下
后缀数组
,昨天再来看这题,就知道显然是
后缀数组
的应用了。 我知道解这道题肯定是类似于用
后缀数组
求字符串所有不同子串个数的思路。
·
2015-11-11 10:55
后缀数组
hdu1403 赤裸裸的
后缀数组
赤裸裸的
后缀数组
的应用啊。
·
2015-11-11 10:54
后缀数组
POJ 3581 Sequence(
后缀数组
)
题目链接:http://poj.org/problem?id=3581 题意:给定一个数列,将其分为三段,每段不空。然后分别将三段的数字翻转拼在一起组成新 的数列。使得新的数列的字典序最小? 思路:首先第一段翻转之后必须最小,因此将原数列翻转求sa,则排名在前面且sa[i]>1(因为另两段不能为空)的第一个i为第一段。然后剩下后两段。因为翻转之后,第二段的前面接在第一段的后面,
·
2015-11-11 09:59
sequence
POJ 2774 Long Long Message(
后缀数组
)
题目链接:http://poj.org/problem?id=2774 题意:给定两个字符串A和B,求最长公共子串。 思路:将两个串连在一起。枚举h,如果sa[i]和sa[i-1]在连接处的两侧则该h值可以更新答案。 int r[N],sa[N],wa[N],wb[N],wd[N],rank[N],h[N]; int cmp(int *r,int a,int b,in
·
2015-11-11 09:58
message
POJ 3693 Maximum repetition substring(
后缀数组
)
题目链接:http://poj.org/problem?id=3693 题意:给定一个字符串,求重复次数最多的连续重复子串。 思路: int r[N],sa[N],wa[N],wb[N],wd[N],rank[N],h[N]; int cmp(int *r,int a,int b,int L) { return r[a]==r[b]&&
·
2015-11-11 09:57
substring
POJ 3261 Milk Patterns(
后缀数组
)
题目链接:http://poj.org/problem?id=3261 题意:找出至少出现m次的重复字串。 思路:二分答案,将h分组,同一组中的个数+1就是重复子串的个数。 int r[N],sa[N],wa[N],wb[N],wd[N],rank[N],h[N]; int cmp(int *r,int a,int b,int L) { return r[
·
2015-11-11 09:56
Pattern
SPOJ 694 Distinct Substrings(
后缀数组
)
题目链接:http://www.spoj.com/problems/DISUBSTR/ 题意:给定一个串,求不同的字串的个数。 思路:每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数。如果所有的后缀按照suffix(sa[1]), suffix(sa[2]),suffix(sa[3]),……,suffix(sa[n])的顺序计算,不难发现,对于每一次新加进来的后
·
2015-11-11 09:56
substring
POJ 1743 Musical Theme(
后缀数组
)
题目链接:http://poj.org/problem?id=1743 题意:找出最长的不重叠重复串。 思路:求出h数组,二分答案k,按照k将h分组。在每组中的任意两个的串都满足前缀大于等于k。求出这些串中位置的最大最小值,差大于等于k就行。 int r[N],sa[N],wa[N],wb[N],wd[N],rank[N],h[N]; int cmp(int *r,int
·
2015-11-11 09:56
theme
hdu 3518 (
后缀数组
)
code:
后缀数组
处理,对于得到height 进行查找...
·
2015-11-11 08:40
后缀数组
poj3581Sequence(
后缀数组
)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Sequence Time Limit: 5000MS Memory Limit: 65536K Case Time
·
2015-11-11 08:47
sequence
POJ1743 - Musical Theme(
后缀数组
)
题目大意 给定一首乐谱,要求你求出它的主旋律,所谓的主旋律是符合以下三个条件的子串: 1、长度至少为5 2、至少重复出现两次 3、不允许重叠 题解 至于为什么可以进行二分判断,我搞好久都没懂,后面看了某位大牛的证明才知道为什么是这样子的,我直接把证明过程摘过来了: 给出一个关于LCP的定理LCP(SA[i], SA[j]) = RMQ(Height[i+1..j]).由此, 若存在k,
·
2015-11-11 06:25
theme
[小结]字符串专题
这些题其实都是
后缀数组
的基础题, 被我用哈希水了...
·
2015-11-11 06:54
字符串
POJ 3080 Blue Jeans
解题思路:将所有串链接在一起,中间用不同的分隔符分割,求解
后缀数组
Height,二分求解连续长度>=k的公共子串是否包含了所有情况。
·
2015-11-11 04:16
poj
字符串:KMP Eentend-Kmp 自动机 trie图 trie树 后缀树
后缀数组
个人代码示例
转自银河里的星星 涉及到字符串的问题,无外乎这样一些算法和数据结构:自动机 KMP算法 Extend-KMP 后缀树
后缀数组
trie树 trie图及其应用。
·
2015-11-11 04:11
后缀数组
BZOJ 2754 喵星球上的点名(
后缀数组
)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2754 题意:给出n个字典串,m个询问串。输出每个询问串出现在多少个字典串中。最后输出每个字典串中含有多少个询问串。 思路:将所有字典串和所有询问串连在一起求sa和h数组。统计时对于每个询问串,设长度为len,向前向后扫一下h值大于等于len的区间。然后在这个区间中看有多少个字典串,就
·
2015-11-11 03:20
后缀数组
HDU 4691 Front compression(
后缀数组
)
思路:求
后缀数组
。每次直接询问两个后缀的最长公共前缀。
·
2015-11-11 03:20
compression
poj2774 Long Long Message(
后缀数组
or后缀自动机)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Long Long Message Time Limit: 4000MS Memory Limit:
·
2015-11-11 02:21
message
上一页
17
18
19
20
21
22
23
24
下一页
按字母分类:
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
其他