
后缀数组
文章平均质量分 56
16bit戦争
这个作者很懒,什么都没留下…
展开
-
BZOJ 3238 AHOI 2013 差异 后缀树
题目大意:求所有后缀长度减去LCP长度的二倍。 思路:之前用后缀数组写过,但是做法并不是很直观。现在学了后缀树再来写一次,这次思路就很清晰了。 首先我们把字符串按照倒序插入到后缀树中。形成的后缀树有一个很好的性质,连个后缀节点的LCA就是这两个后缀的LCP的位置,LCA的len值自然就是两个后缀的LCP。 建好树之后,进行一次树形DP,统计出来每两个后缀的LCP长度,计入总答案。原创 2015-01-17 16:31:36 · 1325 阅读 · 0 评论 -
BZOJ 3238 AHOI 2013 差异 后缀数组+单调栈
题目大意: 思路:一看各种后缀那就是后缀数组没跑了。 求出sa,height之后就可以乱搞了。对于height数组中的一个值,height[i]来说,这个值能够作为lcp值的作用域只在左边第一个比他小的位置到右边第一个比他小的位置。这个东西很明显可以倍增RMQ+二分/单调栈。 之后就是数学题了 Σlen[Ti] + len[Tj] = (len + 1) * len * (len原创 2014-12-30 20:11:06 · 792 阅读 · 0 评论 -
BZOJ 2251 2010Beijing WC 外星联络 后缀数组/Trie树
题目大意给出一个字符串,问这个字符串中出现过1次以上的子串的个数,按照子串的字典序输出。思路由于数据范围过小,这个题有两个解法。 基本的想法就是用后缀数组来进行后缀的排序,之后按照height数组扫就可以了。应该是挺快的。 但是注意到数据范围只有3000,因此我们只需要弄出所有的后缀拿出来建立一颗后缀Trie树就行了。最后DFS一次树种的所有节点。CODESuffixArraySuffixArr原创 2015-04-07 09:42:12 · 1569 阅读 · 0 评论