
算法题解-后缀数组
Jarily
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
PKU3261(Milk Patterns)求可重叠k次的最长重复子串(后缀数组+二分)
/********************************************************** 题目大意: 给定一个字符串,求至少出现k次的最长重复子串,这k个子串可以重叠; 算法分析: 这个题和PKU1743的做法差不多; 也是先二分答案,然后将后缀分成若干组; 即先用后缀数组求出height数组; 然后利用height数组把排序后的后缀分成若干组; 不同的这里要判断有原创 2013-03-23 16:11:18 · 1773 阅读 · 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 · 2269 阅读 · 0 评论 -
PKU2774(Long Long Message)求最长公共子串(后缀数组)
/******************************************************* 题目大意: 给定两个字符串A和B,求最长公共子串; 算法思想: 字符串的任何一个子串都是这个字符串的某个后缀的前缀; 求A和B的最长公共子串等价于求A的后缀和B的后缀的最长公共前缀的最大值; 如果枚举A和B的所有的后缀,很明显效率低下; 由于要计算A的后缀和B的后缀的最长公共前缀,所原创 2013-03-23 15:13:13 · 1902 阅读 · 0 评论 -
Spoj694(Distinct Substrings)求字符串不相同的子串个数(后缀数组)
/********************************************* 题目地址: http://www.spoj.com/problems/DISUBSTR/ 题目大意: 给定一个字符串,求不相同的子串的个数; 算法分析: 每个子串一定是某个后缀的前缀; 那么原问题等价于求所有后缀之间的不相同的前缀的个数; 如果所有的后缀按照suffix(sa[1]), suffix(原创 2013-03-23 19:55:05 · 1645 阅读 · 0 评论 -
Ural1297(Palindrome)求最长回文子串(后缀数组)
/********************************************* 题目地址: http://acm.timus.ru/problem.aspx?space=1&num=1297 题目大意: 给定一个字符串,求最长回文子串; 算法分析: 穷举每一位,然后计算以这个字符为中心的最长回文子串; 注意这里要分两种情况,一是回文子串的长度为奇数,二是长度为偶数; 两种情况都可原创 2013-03-23 21:04:24 · 2067 阅读 · 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 · 4216 阅读 · 1 评论