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
POJ1743
后缀数组(不可重叠重复子串)
poj1743
思路:二分答案,然后遍历height数组,看能不能找到符合条件的我写的一直wa,求大神指导#include#include#include#include#include#include#include#include#include#include#includeusingnamespacestd;constintmaxn=20010;constintINF=10000000;intn,x[ma
u010660276
·
2020-08-24 23:03
后缀数组
字符串
后缀数组经典题---不可重叠最长重复子串
poj1743
内容也是别处看来的,就不写原创了题意:有N(1<=N<=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题。“主题”是整个音符序列的一个子串,它需要满足如下条件:1.长度至少为5个音符。2.在乐曲中重复出现。(可能经过转调,“转调”的意思是主题序列中每个音符都被加上或减去了同一个整数值)3.重复出现的同一主题不能有公共部分。思路:后缀数组。求出任意相
hitwhacmer1
·
2020-07-02 02:00
后缀数组(二)利用height对sa数组分组的做法(poj 1743 & poj 3261 )
poj1743
给定一个字符串,求最长重复子串,且这两个子串不重叠二分答案,判断答案k是否可行时,把后缀数组分成若干组,每组中重复子串的长度都大于或等于k(即height大于等于k),如果本组中sa的最大最小值之差大于
mtxxxx
·
2016-08-28 08:33
poj
字符串
poj1743
最长不重复公共子串
http://poj.org/problem?id=1743从题目中的意思可以知道,只要满足相邻的差相等便可以了,那我们建立一个相邻并非的数组,题目要求的便是求最长的重复子串长度,而且不可重叠。由于相邻差可能为负,则统一加上100,转变为0-200之间的数即可。如果允许重叠,显然地,答案就是max(height[i])。这是因为sa数组中相邻的两个串公共前缀一定最大,而最长重复子串就是任意两个串的
aonaigayiximasi
·
2016-05-04 21:00
POJ1743
Musical Theme 题解&代码
后缀数组…对最长不重叠子串长度进行二分判定,判定方式是暴力分组利用height[]的性质:如果height[i]>x,height[i-1]>x,那么存在从sa[i-2]到sa[i]的部分最长公共子串大于x可以推论:对于height[i]~height[j]均大于x,那么存在sa[i-1]到sa[j]的部分最长公共子串大于x这样可以得出对于一段连续的满足条件的height[],有连续的多个sa[]
Rainbow6174
·
2016-03-09 22:00
poj
POJ1743
(求最长不可交叉子串)
MusicalThemeTimeLimit: 1000MS MemoryLimit: 30000KTotalSubmissions: 24114 Accepted: 8144DescriptionAmusicalmelodyisrepresentedasasequenceofN(1 #include #include #include #include usingnamespacestd
baneHunter
·
2016-03-03 09:00
【
poj1743
】Musical Theme 后缀数组+二分
DescriptionAmusicalmelodyisrepresentedasasequenceofN(1 #include #include #include usingnamespacestd; constintSZ=1000010; constintINF=1000000010; intn,lcp[SZ],sa[SZ],rank[SZ],k=1,tmp[SZ]; boolcmp_sa
LOI_DQS
·
2016-02-27 17:00
POJ3261 Milk Patterns(二分+后缀数组)
与
POJ1743
同理。
WABoss
·
2016-02-19 15:00
POJ1743
Musical Theme(二分+后缀数组)
题目大概是给n个数组成的串,求是否有多个“相似”且不重叠的子串的长度大于等于5,两个子串相似当且仅当长度相等且每一位的数字差都相等。 这题是传说中楼教主男人八题之一,虽然已经是用后缀数组解决不可重叠最长重复子串的经典题了。。但其实没那么简单,题目数据不强,网上一些代码都是不正确的。首先把问题转化成重复子串的问题:把原串每一位都与前一位相减。这样得出的新串如果有两个长度为n的子串相同,那么它们对应在
WABoss
·
2016-02-18 20:00
【
POJ1743
】不可重叠最长重复子串
题意:求一个字符串里两个不重叠的最长重复子串 代码如下:1#include 2#include 3#include 4#include 5usingnamespacestd; 6 7intsa[20010],rank[20010],y[20010],Rsort[20010]; 8intwr[20010],a[20010],height[20010],n; 9 10bo
konjak魔芋
·
2015-12-15 17:00
【后缀数组】[
POJ1743
]Musical Theme 乐曲主旋律
题目:后缀数组模板题,做法参见罗穗骞论文。自认为代码写得比较好看。#include #include #include usingnamespacestd; #defineMAXN500000 #defineMAXD200 intarray[4][MAXN*2+10],height[MAXN+10],ans; int*nsa,*rk,*nrk,*sa; inta[MAXN+10],n,b[MAXN
wangyaninglm
·
2015-12-14 13:00
C++
字符串
poj
后缀数组
SA
[
POJ1743
Musical Theme](USACO5.1.3)
[关键字]:后缀数组 [题目大意]:找到一个字符串内长度不小于五的最长不重复字串,字串的所有数字同时加上或减去一同一个数也算重复出现。这时usaco5.1.3的原题但数据范围变大了。 //===================================================================================================== [
·
2015-11-13 02:53
USACO
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
poj1743
题意:给出一段只有音高(整数表示),没有节奏的乐谱,问其中最长的曲调相同的没有重叠的两段的长度是多少。 分析:后缀数组,一定要注意,吉大的模板的nlogn算法,要初始化n=strlen(s) +1,另外,s,sa,rank一定要从0位置开始使用。height从1位置开始有意义。 这题是要在求出相邻音高之差之后找不重叠(无公共部分)的最长的重复出现过至少两次的串,也就是在height数组中找到一
·
2015-11-10 22:26
poj
POJ 1743 Musical Theme (后缀数组)
题目地址:
POJ1743
二分长度,由于相似的都挨在一块,所以需要判断大于等于mid的区间的位置最左端与最右端是否大于mid.代码如下:#include #include #include #include
u013013910
·
2015-11-02 21:00
编程
ACM
后缀数组
算法与数据结构
poj1743
(后缀数组)
http://poj.org/problem?id=1743 题意:给出一串字符,求不重合的最长重复子串.......... 我自己的一点想法:编完后发现,其实就是将height值分组,然后记录在二分答案时满足height值>=p的sa[i]的最大最小值,然后要是最大值减去最小值会>=p,这就说明两个子串的lcp值>=p并且它们的坐标也相差>=p,就自然满足题意
·
2015-11-01 14:15
后缀数组
poj 3261 求可重叠的k次最长重复子串
题意:求可重叠的k次最长重复子串的长度 链接:点我 和
poj1743
差不多 1 #include<cstdio> 2 #include<iostream>
·
2015-10-31 10:30
poj
poj1743
(后缀数组)
转自:http://www.cnblogs.com/ziyi--caolu/p/3195342.htmlhttp://poj.org/problem?id=1743题意:给出一串字符,求不重合的最长重复子串..........我自己的一点想法:编完后发现,其实就是将height值分组,然后记录在二分答案时满足height值>=p的sa[i]的最大最小值,然后要是最大值减去最小值会>=p,这就说明两
cacyth
·
2015-08-21 14:00
poj1743
:Musical Theme(后缀数组)
DescriptionAmusicalmelodyisrepresentedasasequenceofN(1 #include #include #include #include #include #include #include #include #include #include #include usingnamespacestd; #defineLS2*i #defineRS2*i+
libin56842
·
2015-05-29 13:00
poj
后缀数组
【
POJ1743
】Musical Themes 乐曲主题 后缀数组、 (也可以用hash+二分做的~)
题意:1829:MusicalThemes乐曲主题TimeLimit: 1Sec MemoryLimit: 128MBSubmit: 42 Solved: 15[Submit][Status][WebBoard]Description我们用N(1 #include #include #include #defineN21000 usingnamespacestd; ints[N]; intsa
Vmurder
·
2015-01-04 20:00
后缀数组
themes
POJ1743
Musical
SPOJ 220后缀数组:求每个字符串至少出现两次且不重叠的最长子串
因为是不重叠的,所以和
POJ1743
判断一样,只不过这里是多个串,每个串都要判断里面的最长公共前缀有没有重叠,所以用数组存下来就得了,然后再判断。
u011466175
·
2014-08-15 15:00
POJ 3261 后缀数组:求可重叠的最长重复子串
kG_SolxPKmyHjwKCvnQ5bxVMUAA3FU-3HFSBASW_jLSgku9u9r9PKHKGqf4CF9RTxG4gfkYg6lMCdGZu2eVMCvidEtcObiAXLP_9-3PhKp3思路:这题的做法和
POJ1743
u011466175
·
2014-08-13 12:00
【后缀数组】
poj1743
MusicalThemeDescriptionAmusicalmelodyisrepresentedasasequenceofN(1 #include #include #defineN20100 longn,m; longa[N],sa[N],rank[N],height[N],wa[N],wb[N],wv[N],ws[N]; boolcmp(long*r,longa,longb,longl)
hetangl2
·
2014-04-21 14:00
poj
poj1743
之后缀数组
MusicalThemeTimeLimit: 1000MS MemoryLimit: 30000KTotalSubmissions: 15932 Accepted: 5509DescriptionAmusicalmelodyisrepresentedasasequenceofN(1 #include #include #include #include #include #include #inc
xingyeyongheng
·
2013-11-14 22:00
POJ1743
Musical Theme
后缀数组典型题。给定一个字符串,求最长重复子串,这两个子串不能重叠。计算height数组,然后二分答案k,连续的height>=k的区间中sa相差最大的差若超过k,则符合条件。#include #include #include usingnamespacestd; constintmaxn=20005; inta[maxn],s[maxn]; intn,ans,sa[maxn],sx[maxn
huangshenno1
·
2013-10-23 00:00
poj1743
后缀数组
楼天成男人八题中的一道,给n个1..88的数字组成一个串S,要找出其中最长的“theme”,theme是串S的一个字串,具体的定义是1.长度至少为5;2.自身或者自身的变形在其他位置至少出现了一次3.条件2中的两个字串不重叠。变形的含义是对某个串,对他的每一位加上或减掉一个常数C,得到的新串就是原串的变形。 根据题意的匹配规则,不难想到把相邻的两个数做差得到一个新串,然后就是
yanglei040
·
2013-09-26 22:00
poj1743
(后缀数组+二分)
MusicalThemeTimeLimit:1000MS MemoryLimit:30000KTotalSubmissions:15387 Accepted:5321DescriptionAmusicalmelodyisrepresentedasasequenceofN(1 #include #include usingnamespacestd; //**********************
xj2419174554
·
2013-08-22 10:00
后缀数组
二分
poj1743
(后缀数组+二分--不可重叠最长重复子串)
题目:MusicalTheme #include #include #defineN1000010 intwa[N],wb[N],wv[N],ws[N]; intrank[N],height[N]; intsa[N],r[N]; intmax(inta,intb) { returna>b?a
ACdreamers
·
2013-06-17 00:00
POJ1743
Musical Theme,后缀数组,最长重复不重叠子串,二分检索答案
开始进入后缀数组的学习。首先分析输入和题目,可以把数组转化为相邻两个元素的差,然后题目就转化为求最长不重叠子串的长度。因为数组转化为两个元素的差,所以需要在新数组的最后补上一个元素0,同时最长长度要+1方为答案。而后缀数组的资料可以参考罗穗骞的论文,本人在这里就不献丑了。P.S.因为元素之差可能为负数,所以需要同时加上一个数使得新数组的元素均为正,同时注意倍增算法DoublingAlgorithm
neofung
·
2012-06-02 16:00
【倍增后缀数组】
poj1743
&2406& 3261 & 3294 & 2774
曾经有几次想写后缀数组,结果被论文中缩成豆腐块的程序吓到了....... 现在看懂了之后,被这个程序写的丑陋吓到了。 丑虽丑,但是写的还是很精巧的,照着打吧。 后缀数组其实就是吧一个长度为n的字符串(当然也可以是其他的,只要能比大小)的所有后缀排序后存在数组里。 打裸是O(n*n*log(n))的。 其实如果以每个点为开头,分
cjoilmd
·
2012-01-15 22:00
后缀数组学习系列一
献上这两篇神作供大家交流学习后缀数组下面一道题,
poj1743
,最长不重叠重复子串基本用的罗神的摸板http://p
ACSeed
·
2011-09-07 10:00
后缀数组+最长公共前缀(LCS)+最长重复出现的不重叠字串(POJ 1743)
下面结合
POJ1743
给出代码和注释: #includ
clearriver
·
2009-10-17 14:00
上一页
1
下一页
按字母分类:
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
其他