
数据结构------后缀数组 LCP
Z-Pilgrim
这个作者很懒,什么都没留下…
展开
-
后缀数组 学习笔记
一、几种数组: 1、suffix(i) 字符串 s的从 第 i个字符开始的后缀表示为 suffix(i) 2、后缀数组 SA:它保存 1..n的某个排列 SA[1 ] ,SA[2] , …… , SA[n] ,并且保证suffix(SA[i]) 也就是将 S的 n 个后缀从小到大进行排序之后把排好序的后缀的开头位置顺次放入 SA 中。就是说排名第i的后原创 2014-03-09 17:12:43 · 1684 阅读 · 0 评论 -
poj 3581 后缀数组 详解
这个题折腾了快一个月,终于今晚又奋战了4个小时,AC掉了题目:http://poj.org/problem?id=3581首先看我写这个后缀数组教程,其实还不错http://blog.youkuaiyun.com/u011026968/article/details/20851295关于第一个位置,反向读入,然后求后缀数组,找最小位置就好第二个位置比较麻烦,参考这个博客的例子:http://b原创 2014-04-02 01:43:32 · 2390 阅读 · 1 评论 -
LCP poj 2217 寻找最长公共子串
题目:http://poj.org/problem?id=2217首先解释,DP中的最长公共子序列和此处的最长公共子串区别-------------------序列可以是不连续的,但是子串是连续的其次,LCP,lcp[i]就是lcp[rank[i]]和lcp[rank[i]+1]的最长公共前缀,那么把两个字符串接起来,然后找最长的lcp,就是答案思路还是比较清晰的上原创 2014-04-02 15:19:04 · 2782 阅读 · 2 评论 -
poj 1226 hdu 1238 Substrings 求若干字符串正串及反串的最长公共子串 2002亚洲赛天津预选题
题目:http://poj.org/problem?id=1226http://acm.hdu.edu.cn/showproblem.php?pid=1238其实用hash+lcp可能也可以,甚至可能写起来更快,不过我没试,我最近在练习后缀数组,所以来练手后缀数组的典型用法之一----------------后缀数组+lcp+二分思路:1、首先将所有的字符串每读原创 2014-05-21 21:00:28 · 1593 阅读 · 0 评论 -
poj 3261 后缀数组 找重复出现k次的子串(子串可以重叠)
题目:http://poj.org/problem?id=3261仍然是后缀数组的典型应用----后缀数组+lcp+二分做的蛮顺的,1A但是大部分时间是在调试代码,因为模板的全局变量用混了,而自己又忘了,,,等西安邀请赛还有四省赛结束之后,该冷静反思下尝试拜托模板了错误 :1、k用错,题目的k和模板的k用混;2、还是二分的C()函数,这个其实跟前一篇《poj 1原创 2014-05-22 01:01:13 · 1941 阅读 · 0 评论 -
poj 1743 最长不重叠重复子串 后缀数组+lcp+二分
题比较容易读懂,但是建模需动点脑子:一个子串加常数形成的子串认为跟子串相同,求最长不重叠重复子串题目中说is disjoint from (i.e., non-overlapping with) at least one of its other appearance(s)意味着不能重叠,举个例子1, 2,3, 52, 53,541,2, 3和 52, 5原创 2014-07-02 13:43:42 · 968 阅读 · 0 评论 -
spoj 694 求一个字符串中不同子串的个数
SPOJ Problem Set (classical)694. Distinct SubstringsProblem code: DISUBSTRGiven a string, we need to find the total number of its distinct substrings.InputT- number of原创 2014-07-02 15:09:58 · 4627 阅读 · 0 评论 -
做后缀数组类的题用于调试的代码
#include #include #include #include #include #include using namespace std;#define MAXN 1001int n,k;//n=strlen(s);int Rank[MAXN];int tmp[MAXN];char s[MAXN];int lcp[MAXN],sa[MAXN];/*使用R原创 2014-07-02 14:20:34 · 722 阅读 · 0 评论 -
hdu 4691 最长公共前缀 后缀数组 +lcp+rmq
http://acm.hdu.edu.cn/showproblem.php?pid=4691去年暑假多校赛的题,当时还不会后缀数组现在会了,其实自己组合后缀数组跟rmq还是对的,但是题意理解有问题,于是折腾了很久,,,,此处简单解释下题目样例吧,希望对读者有帮助 以最后一组数据为例myxophytamyxopodnabnabbednabbingnabit60 99 1原创 2014-06-17 22:40:32 · 1683 阅读 · 0 评论