
算法题解-后缀数组
Jarily
这个作者很懒,什么都没留下…
展开
-
PKU3261(Milk Patterns)求可重叠k次的最长重复子串(后缀数组+二分)
/**********************************************************题目大意:给定一个字符串,求至少出现k次的最长重复子串,这k个子串可以重叠;算法分析:这个题和PKU1743的做法差不多;也是先二分答案,然后将后缀分成若干组;即先用后缀数组求出height数组;然后利用height数组把排序后的后缀分成若干组;不同的这里要判断有原创 2013-03-23 16:11:18 · 1755 阅读 · 0 评论 -
PKU1743(Musical Theme)求不可重叠最长重复子串(后缀数组+二分)
/**********************************************题目大意:给出一个旋律,用n个数字[1,88]表示其音符,求它的最长的主题长度;一个旋律的主题是一段至少出现过两次的不重叠音乐片段;重复出现也包括一段音乐全体加上某个数后再次出现(如1 2 3 4 5和5 6 7 8 9为同一个音乐片段,全部+4);主题长度至少为5,无解输出0;算法分析:原创 2013-03-22 15:04:50 · 2251 阅读 · 0 评论 -
PKU2774(Long Long Message)求最长公共子串(后缀数组)
/*******************************************************题目大意:给定两个字符串A和B,求最长公共子串;算法思想:字符串的任何一个子串都是这个字符串的某个后缀的前缀;求A和B的最长公共子串等价于求A的后缀和B的后缀的最长公共前缀的最大值;如果枚举A和B的所有的后缀,很明显效率低下;由于要计算A的后缀和B的后缀的最长公共前缀,所原创 2013-03-23 15:13:13 · 1883 阅读 · 0 评论 -
Spoj694(Distinct Substrings)求字符串不相同的子串个数(后缀数组)
/*********************************************题目地址:http://www.spoj.com/problems/DISUBSTR/题目大意:给定一个字符串,求不相同的子串的个数;算法分析:每个子串一定是某个后缀的前缀;那么原问题等价于求所有后缀之间的不相同的前缀的个数;如果所有的后缀按照suffix(sa[1]), suffix(原创 2013-03-23 19:55:05 · 1633 阅读 · 0 评论 -
Ural1297(Palindrome)求最长回文子串(后缀数组)
/*********************************************题目地址:http://acm.timus.ru/problem.aspx?space=1&num=1297题目大意:给定一个字符串,求最长回文子串;算法分析:穷举每一位,然后计算以这个字符为中心的最长回文子串;注意这里要分两种情况,一是回文子串的长度为奇数,二是长度为偶数;两种情况都可原创 2013-03-23 21:04:24 · 2051 阅读 · 0 评论 -
实现后缀数组的倍增算法和DC3算法
/************************************************数据结构:后缀数组(Suffix_Array);子串:字符串S的子串r[i..j],i≤j,表示r串中从i到j这一段,也就是顺次排列r[i],r[i+1],...,r[j]形成的字符串;后缀:后缀是指从某个位置i开始到整个串末尾结束的一个特殊子串;字符串r的从第i个字符开始的后缀表示为原创 2013-03-22 14:31:52 · 4203 阅读 · 1 评论