后缀数组
_pkm_
love coding
展开
-
poj2217Secretary(后缀数组+两串最长公共子串(可以重叠))
题意:最长公共的子串的长度(要求是连续的) 分析:先考虑一个简化的问题,求一个串最少出现2次的最长子串,我们可以知道答案一定在相邻的后缀数组的公共前缀中,即LCP的最大值。那么本题可以转化为上述问题,把s,t串连接,在连接的位置插上一个在s,t里没有出现的字符,比如’\0’即可。#include<cstdio>#include<iostream>#include<algorithm>#inc原创 2015-09-13 21:08:46 · 637 阅读 · 0 评论 -
POJ 1743Musical Theme(后缀数组+不可重叠最长子串)
/* 题意: * POJ 1743 Musical Theme * 有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题。 * “主题”是整个音符序列的一个子串,它需要满足如下条件: * 1.长度至少为5个音符 * 2.在乐曲中重复出现(可能经过转调,“转调”的意思是主题序列中每个音符都被加上或减去了同一个整原创 2015-09-14 16:27:22 · 385 阅读 · 0 评论 -
spoj694 Distinct Substrings(后缀数组+统计不同子串的个数)
给定一个字符串,求不相同的子串的个数。 算法分析: 每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相 同的前缀的个数。如果所有的后缀按照 suffix(sa[1]), suffix(sa[2]), suffix(sa[3]), …… ,suffix(sa[n])的顺序计算,不难发现,对于每一次新加 进来的后缀 suffix(sa[k]),它将产生 n-sa[k]+1 个新原创 2015-09-14 20:08:14 · 559 阅读 · 0 评论 -
poj3261Milk Patterns(后缀数组+可重叠的 k 次最长重复子串)
题意:求一个串里最长的至少重叠K次的子串的长度。 按照lcp数组分组,二分答案,判断某一个分组里是否有足够的sa数组//#include<cstdio>//#include<algorithm>//#include<cstring>//using namespace std;//#define cl(a,b) memset(a,b,sizeof(a))//const int maxn=2原创 2015-09-14 18:34:45 · 444 阅读 · 0 评论 -
poj 1743Maximum repetition substring(后缀数组+RMQ+重复次数最多的连续重复子串))
题意:重复次数最多的连续重复子串,只能说是一个神题目啊,论文上点了些思路。 就这样吧。。。。#include<cstdio>#include<iostream>#include<algorithm>#include<string>#include<cstring>using namespace std;#define LL long long#define cl(a,b) mems原创 2015-09-15 19:22:06 · 425 阅读 · 0 评论 -
poj3415 Common Substrings (后缀数组+单调栈)
论文上提了一些思路,参考大牛的方法,勉强理解一些。。。#include<cstdio>#include<iostream>#include<algorithm>#include<string>#include<cstring>using namespace std;#define LL long long#define cl(a,b) memset(a,b,size(a))cons原创 2015-09-16 15:27:22 · 433 阅读 · 0 评论 -
poj3294 Life Forms(后缀数组+大于k/2个字符串中含有的最长公共子串)
解法:把字符串用不同的字符连接起来(所有的用于连接的字符都不同) 然后跑下后缀数组,按照lcp不小于二分的mid分组,然后再判断这一组里面是不是有足够的分布在不同的字符串里。#include<cstdio>#include<iostream>#include<algorithm>#include<string>#include<cstring>#include<vector>usin原创 2015-09-16 21:13:51 · 437 阅读 · 0 评论 -
后缀数组学习小结
学习主要是参考 罗穗骞 的《后缀数组——处理字符串的有力工具》论文 然后自己结合其他书上的后缀数组的实现的方法,选择了一个比较简单的实现版本。 我的SA模板*我的后缀数组和论文的后缀数组计算出来的lcp高度数组有一个下标的偏移我的高度数组是lcp数组,也就是[0,n)是有效值论文的后缀数组在计算sa数组的时候是在字符串的末尾加上一个0我的这个模板不用这样操作(因为在计算的时候原创 2015-09-18 09:31:06 · 481 阅读 · 0 评论