Long Long MessageTime Limit: 4000MSMemory Limit: 131072KTotal Submissions: 22564Accepted: 9255Case Time Limit: 1000MSDescriptionThe little cat is majo...
分类:
编程语言 时间:
2015-03-03 06:18:33
阅读次数:
244
Maximum repetition substringTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 7578Accepted: 2281DescriptionThe repetition number of a string is...
分类:
编程语言 时间:
2015-03-03 06:18:08
阅读次数:
327
省队冲刺计划 从现在3月1号开始,距离省选还有41天了,这段时间,预计会有二十几场考试和十多天完全空闲的时间,还是有必要规划一下接下来的冲刺计划了。 现在我的主要问题有如下:一个程序不能快速调对有些基础算法有遗忘(如FFT,莫比乌斯反演,米勒拉宾,后缀数组等),这算是当下最严重的问题考试时不...
分类:
其他好文 时间:
2015-03-01 22:14:44
阅读次数:
153
题目链接 先用后缀数组给串排好序。dc3 O(n) 二分答案+贪心check 答案的长度len=(n+k-1)/k 如果起点为i长为len串大于当前枚举的答案,i的长度取len-1 从起点判断k个串的长度是否大于等于n check的时候最多枚举len个起点,每个位置需要枚举n/le...
分类:
其他好文 时间:
2015-02-16 01:38:01
阅读次数:
132
分析:实际上,我们用next[i]表示 T[i-n] 和T[1-n]的最长公共前缀,那么a[i]=next[i] +next[i+1]...... +next[n]; 最长公共前缀(lcp)有3种方法 : 扩展kmp ,hash 和后缀数组 。
方法一 :扩展kmp
//#pragma comment(linker, "/STACK:102400000,102400000")
...
分类:
其他好文 时间:
2015-01-30 22:45:56
阅读次数:
318
题目大意:给定N个串,求每个串至少出现两次的最长子串。
解题思路:每个字符串至少出现两次且不可重叠的最长子串:二分枚举长度后在同一分组中对每一个字符串保留一个最小的位置和一个最大的位置,最后查看是否每个串在同一组中都有至少两个后缀,并且后缀的坐标差大于枚举的长度。
POJ Problem Set (classical)
220. Relevant Phrases of Annihil...
分类:
编程语言 时间:
2015-01-27 18:28:33
阅读次数:
193
题目大意:给出n个字符串,让你求出最长的子串,如果有多个按照字典序顺序输出。
解题思路:将n个字符串连起来,中间需要隔开,然后我们二分枚举字符串的长度,求最长的长度,如果多个需要按照字典序保存起来,最后输出答案就可以了。时间复杂度是:O(n*log(n))。
Life Forms
Time Limit: 5000MS
Memory Limit: 65536K
...
分类:
编程语言 时间:
2015-01-27 16:23:07
阅读次数:
292
题目大意:给你两个字符串,让你求出来两个字符串之间的重复子串长度大于k的有多少个。
解题思路:
先说论文上给的解释:基本思路是计算A的所有后缀和B的所有后缀之间的最长公共前缀的长度,把最长公共前缀长度不小于k的部分全部加起来。先将两个字符串连起来,中间用一个没有出现过的字符隔开。按height值分组后,接下来的工作便是快速的统计每组中后缀之间的最长公共前缀之和。扫描一遍,每遇到一个B的后缀就统...
分类:
编程语言 时间:
2015-01-27 11:09:02
阅读次数:
149
题目大意:给定一个序列,求差分后有多少个子串满足形式为ABA,其中B部分长度为m,A部分长度大于0
首先枚举A的长度j,将序列上每隔j个点插入一个关键点
对于第i个位置上的关键点,我们找到第i+j+m个位置
利用后缀数组找出两个位置向左拓展多少个位置都是相同的,以及向右拓展都少个位置都是相同的
为了保证不重复向左和向右最多拓展j-1个位置
设拓展之后长度为len,那么如果len>=j,a...
分类:
编程语言 时间:
2015-01-26 22:51:50
阅读次数:
274
题目大意:给你一个串让你求出重复次数最多的连续重复子串的重复次数。
解题思路:论文上给出的解答是:
这还没完,因为经过这两个点的情况还不完备,应还可以假设起点在 [ i*j-i+1, i*j-d],其中 d = i-L/i (d = i-L%i)其意义为根据已知的匹配长度,可以将起点往前移动的范围,太靠后将不能够构造出比之前更好的解。如果要求出某个最多的连续重复子串的最小字典序子需要枚...
分类:
编程语言 时间:
2015-01-26 17:10:25
阅读次数:
296