摘要: 题意:最长的出现k次的重复(可重叠)子串题解:和POJ 1743一样,稍作改变,求最大的话一般都是对后缀数组二分处理。。http://www.cnblogs.com/proverbs/archive/2013/02/05/2893419.html判定条件从位置相差>=m改为是否存在一个块内后缀的个数大于等于m数比较大,快排搞定,好像基数排序也可以。View Code 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <cstdlib> 5 #i 阅读全文
posted @ 2013-02-05 23:29 proverbs 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题意:有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题。“主题”是整个音符序列的一个子串,它需要满足如下条件:1.长度至少为5个音符2.在乐曲中重复出现(可能经过转调,“转调”的意思是主题序列中每个音符都被加上或减去了同一个整数值。)3.重复出现的同一主题不能有公共部分。题解:和最长重复子串(可重叠)的思路是一样的。只是我们需要在height数组中二分最小区间。若mid为二分值,删除所有的height[i]<mid的部分,会把height数组分成很多块,显然,我们要求的lcp一定在同一块内(后缀i和后缀 阅读全文
posted @ 2013-02-05 21:26 proverbs 阅读(1400) 评论(0) 推荐(0) 编辑
摘要: http://www.bianchengla.com/course/ds/practise/problem?id=1387找了半天终于找到一个可以提交的地方。。。题解:任何一个重复子串,都必然是某两个后缀的最长公共前缀。因为,两个后缀的公共前缀,它出现在这两个后缀中,并且起始位置时不同的,所以这个公共前缀必然重复出现两次以上(可重叠)。而任何两个后缀的最长公共前缀为某一段height值中的最小值,所以最大为height值中的最大值(即某个lcp(sa[i],sa[i+1]))。所以只要算出height数组,然后输出最大值就可以了。View Code 1 #include <iostrea 阅读全文
posted @ 2013-02-05 21:11 proverbs 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 题意:求单个子串的不重复子串个数题解:一个字符串中的所有子串都必然是它的后缀的前缀。对于每一个sa[i]后缀,它的起始位置sa[i],那么它最多能得到该后缀长度个子串(n-sa[i]个),而其中有height[i]个是与前一个后缀相同的,所以它能产生的实际后缀个数便是n-sa[i]-height[i]。遍历一次所有的后缀,将它产生的后缀数加起来便是答案。View Code 1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cstdio> 5 #i 阅读全文
posted @ 2013-02-05 21:04 proverbs 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 题意:求str1的最长后缀与 str2 的最长前缀。使得 str1+str2 的长度最小,并且字典序最小(str1和str2可以互换)题解:kmp的p数组的含义:p[i]表示以i为结尾的字符串最多和开头匹配的个数。也正是这道题求解的关键、具体做法就是将两个字符串合并处理求一下p数组就好了~ps:合并的时候中间一定要加“分隔符”(比如:#,@之类的~),否则会有惊喜。。。abcbcbca bcbcbc 对拍了半天才发现这个bug。。。View Code 1 #include <iostream> 2 #include <cstring> 3 #include <cs 阅读全文
posted @ 2013-02-05 11:41 proverbs 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 题意:在给定的矩形字符串中找一个最小的矩形字符串,使其通过多次平移复制后,覆盖给定的矩形字符串题解:网上的神马求lcm的算法都是不完善的,具体解释见POJ 2185的discuss。。我的做法是把行看成一个整体,列看成一个整体做kmp。能过discuss里的数据,poj也ac了,不知道有没有漏洞。。感觉应该是对的。View Code 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <cstring> 5 #include <algorithm 阅读全文
posted @ 2013-02-05 11:31 proverbs 阅读(597) 评论(0) 推荐(0) 编辑