后缀数组
GoLakerswxy
这个作者很懒,什么都没留下…
展开
-
POJ - 1743 Musical Theme (后缀数组+二分 求重复出现过的最长不相交子串)
题意:有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的子串。满足1.长度至少为5个音符。2.在乐曲中重复出现。(可能经过转调,“转调”的意思是主题序列中每个音符都被加上或减去了同一个整数值)3.重复出现的同一主题不能有公共部分。思路:用后缀数组求出height后,二分答案len,判断height>...原创 2018-07-26 09:53:40 · 252 阅读 · 0 评论 -
计蒜客 焦作网络赛 String and Times(后缀数组)
题目:给一个字符串问重复出现的次数在[A,B] 区间的子串有多少种。思路:后缀数组,对于一个height[i],求height[i-1]---height[i]区间有多少个h满足存在大于等于h的连续的最长长度>=A并且<=B的一个序列(h的数量比较少可以单个枚举。。),这里用rmq来实现。然后另外算一下A==1的情况,也就是只出现了一次的子串有多少个(比赛时就是这里写错了,唉,我t...原创 2018-09-15 20:09:34 · 422 阅读 · 2 评论 -
牛客网多校3 Sort String(后缀数组DC3)
题目:就是给你一个串,对于第i个位置,你可以把前i个字符放到队尾形成一个新的字符串,问你最后一共有几个字符串DC3卡过去了hhhh#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define F(x) ((x)/3+((x)%3==1?0:...原创 2018-07-27 22:04:11 · 185 阅读 · 0 评论 -
POJ - 3693 求这串字符中的重复次数最多的连续重复子串,多组答案输出字典序最小的那个串(后缀数组)
题目:求这串字符中的重复次数最多的连续重复子串,多组答案输出字典序最小的那个串。思路:与前一个题目几乎一样的,加上了字典序。多判断就好//#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<cstring>#include<algorithm&...原创 2018-07-27 20:26:11 · 374 阅读 · 0 评论 -
SPOJ - REPEATS (后缀数组,rmq,lcp 求重复次数最多的连续重复子串)
题目:给定一个字符串,求重复次数最多的连续重复子串。思路:先穷举长度L,然后求长度为L的子串最多能连续出现几次。首先连续出现1次是肯定可以的,所以这里只考虑至少2次的情况。假设在原字符串中连续出现2次,记这个子字符串为S,那么S肯定包括了字符r[0], r[L], r[L*2],r[L*3], ……中的某相邻的两个。所以只须看字符r[L*i]和r[L*(i+1)]往前和往后各能匹配到多远,记...原创 2018-07-27 19:21:28 · 370 阅读 · 0 评论 -
POJ - 2406 Power Strings (后缀数组dc3算法模板)
题目:给出一个字符串 问它最多由多少相同的字串组成 。kmp简单的三十行代码而且时间还快,一切都是为了dc3模板/*复杂度接近O(n)所有相关数组都要开三倍*/#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define F(x) ...原创 2018-07-27 10:44:16 · 321 阅读 · 0 评论 -
SPOJ - DISUBSTR Distinct Substrings (后缀数组求一个串中不同子串的数量)
题目:求一个串中不同子串的数量。每个后缀答案的贡献是(n-sa[i]+1-height[i])n为子串结束位置。//#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using nam...原创 2018-07-27 09:08:17 · 170 阅读 · 0 评论 -
牛客网多校1 Substring(后缀数组)
题目:给你一个只含abc的字符串,求出所有不同构的子串。同构的定义是指在所有的映射方案下不相同,例如abc可以映射为acb bac bca cab cba,这六个串是相互同构的。(题意是一直没明白啊,,)思路:把abc的所有的映射方案枚举出来,然后按照每种映射方案把S串变换为6个串。最后求出6个串的(不同子串数量+3*单一字符的串数量)/6。除以6 ,例如ab->(ab,ac,ba,bc...原创 2018-07-30 09:29:29 · 257 阅读 · 0 评论 -
POJ - 3261 Milk Patterns(后缀数组+二分 求出现次数>=k的最长子串)
题目:找一个串中出现次数多于k的最长子串。数据好像有些大,先离散一下。之后二分长度就可以了//#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;...原创 2018-07-26 10:20:04 · 179 阅读 · 0 评论 -
hihocoder #1415 : 后缀数组三·重复旋律3 ( 后缀数组da算法模板)
题目:小Hi平时的一大兴趣爱好就是演奏钢琴。我们知道一个音乐旋律被表示为长度为 N 的数构成的数列。小Hi在练习过很多曲子以后发现很多作品中的旋律有共同的部分。旋律是一段连续的数列,如果同一段旋律在作品A和作品B中同时出现过,这段旋律就是A和B共同的部分,比如在abab 在 bababab 和 cabacababc 中都出现过。小Hi想知道两部作品的共同旋律最长是多少?(字符串长度不超过 10...原创 2018-07-15 12:31:33 · 200 阅读 · 0 评论 -
HDU - 5008 B -Boring String Problem (后缀数组 求排名第k小的子串)
题目:给出一个字符串,求不同的子串中排名第k小的子串,并求出字符串的起止位置,如果有多个重复的子串,求出位置最靠左的子串。思路:子串是后缀的前缀,后缀数组对后缀排序的同时,也对子串进行了排序。对于每一个sa[i],会产生n - sa[i] - height[i]个不同的子串,而且这些子串也是排好序的。维护一个n - sa[i] - height[i]的前缀和,二分找一下就可以,找重复的里面的最...原创 2018-09-07 11:36:08 · 451 阅读 · 0 评论