码迷,mamicode.com
首页 >  
搜索关键字:后缀数组    ( 1340个结果
POJ 3693 Maximum repetition substring(后缀数组求最长重复子串)
题目大意:和spoj687类似,就是当长度相同是需要输出一个最小的字典序的序列。 解体思路:这次需要枚举所有的从i到d = i-L/i (d = i-L%i)的位置,然后记录保证最大值的同时,求出来字典序最小的。 Maximum repetition substring Time Limit: 1000MS   Memory Limit: 65536K ...
分类:编程语言   时间:2015-01-26 17:03:45    阅读次数:175
POJ 3261 可重叠的 k 次最长重复子串【后缀数组】
这也是一道例题给定一个字符串,求至少出现 k 次的最长重复子串,这 k 个子串可以重叠。算法分析:这题的做法和上一题差不多,也是先二分答案,然后将后缀分成若干组。不同的是,这里要判断的是有没有一个组的后缀个数不小于 k。如果有,那么存在k 个相同的子串满足条件,否则不存在。这个做法的时间复杂度为 O...
分类:编程语言   时间:2015-01-26 11:37:26    阅读次数:238
后缀数组(多个字符串的最长公共子串)—— POJ 3294
后缀数组(多个字符串的最长公共子串)...
分类:编程语言   时间:2015-01-26 10:18:26    阅读次数:338
周记【距gdoi:96天】
倒计时从三位数变成了两位数。然后这周还是很不知道怎么说,经常写一道题写两天。但是总算把后缀数组写完了,也整理完了。然后周末都不知道干了什么周末就过去了。无聊看了两道省选题发现都是不会做系列,看了以前挖的坑还是不会做系列。然后一节晚自修不知道怎么的也要过去了。刚开始觉得有点信心了,不想太消极。这周放松...
分类:其他好文   时间:2015-01-25 22:15:41    阅读次数:160
后缀数组学习笔记
后缀数组的用处:快速求出两个后缀Suffix(i), Suffix(j)的最长公共前缀(LCP, Longest Common Perfix)以下一张图片可谓简洁明了。下面贴上模板1.求最长重复子串,可以重叠void solve_duplicate_substr(int n){//duplicate...
分类:编程语言   时间:2015-01-25 15:04:43    阅读次数:311
后缀数组(至少重复k次的可重叠的最长重复子串)—— POJ 3882
后缀数组(至少重复k次的可重叠的最长重复子串)...
分类:编程语言   时间:2015-01-25 13:56:16    阅读次数:210
URAL 1297. Palindrome(后缀数组求最大回文串)
题目大意:给你一串字符串,让你求出来它存在的最长连续的回文串。 解题思路:先把字符串逆序加到数组中,然后用后缀数组求解。两种方法:1,枚举排名,直接比较rank相同的字符串的位置差是不是len。如果是的话,就记录求解;2,枚举地址,求第i地址与第2*len-i+1的lcp的最大值。 PS:需要注意如果多解输出靠前的字符串。 两种写法写在了一起,分别是Del,和Del1函数。 1...
分类:编程语言   时间:2015-01-23 21:35:50    阅读次数:378
HDU 4622 Reincarnation( 任意区间子串的长度, 后缀数组+RMQ)
题目大意:给你一个字符串,给你N次查询,每次给你一个区间让你求出这个区间里面有多少子串。 解题思路:我们肯定要枚举位置,然后找公共子串然后再去掉重复的,但是他的地址对应的rank不是连续的,如果暴力找的话会n*n会超时。 从这个博客学习到一种方法:首先对整个字符串求一次sa[]以及height[],之后对于任意区间[L, R],遍历一遍sa[],只要起点在[L, R]内的后缀就需要进行统计,类...
分类:编程语言   时间:2015-01-23 20:12:09    阅读次数:239
SPOJ 694. Distinct Substrings,705. New Distinct Substrings(后缀数组)
题目大意:给定长度为N的字符串,求出其中不相同子串的个数。 解题思路:每一个字串一定是某个后缀的前缀,那么原问题就可以等价于求所有后缀之间的不相同的前缀的个数。如果所有的后缀按照suffix(sa[1]),suffix(sa[2])……suffix(sa[n])的顺序计算,我们会发现对于每个新加进来的后缀suffix(sa[k]),它将产生n-sa[k]+1个新的前缀。但是其中有leight[k...
分类:编程语言   时间:2015-01-22 20:18:15    阅读次数:276
POJ 1743 Musical Theme(后缀数组)
题目大意:给出n个数字。首先将这n个数前后做差,得到另一个长度是n-1的序列。求出这个序列的最长重复子串,且这些子串不能重叠。 PS:这题论文上有解析。 解题思路:先二分答案,把题目变成判断性问题:判断是否存在两个长度为k的字串是否相同的,且不重叠。解决这个问题的关键还是利用height数组。把排序后的后缀数组分成若干组,其中每组的后缀之间的height值都不小于k。 容易看出,有希望成...
分类:编程语言   时间:2015-01-22 18:08:28    阅读次数:238
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!