
后缀数组
Todobe
two funny foolish men
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
后缀数组+单调栈 【Ahoi2013】bzoj3238 差异
题目大意: 题目分析: 这个公式的前两项可以提出来单算,这两项的总和应该是(n+1)n/2 (n+2)。 问题就转化成了求任意两个后缀的lcp之和。 我们知道两个后缀的lcp就是height数组取min,那么反过来想,一个位置能影响到的就是自己前面和后面且height值大于当前位置height值的连续的部分(按照个人理解就是以这个位置的lcp当作桥梁,算出一部分lcp的长度), 问题转化为了原创 2016-12-28 15:45:46 · 412 阅读 · 0 评论 -
后缀数组 【TJOI2013】 bzoj3172 单词
题目大意: 给定一些单词,这些单词组成一篇文章(单词与单词之间有空格),问每个单词在这篇论文中出现多少次。题目分析: 可以再单词与单词之间插分隔符,然后用后缀数组来排序,但是排完也没有什么用,并不能用这个序列来做什么。 但是我们发现,前缀相同的后缀一定被排到一块了,所以我们可以利用这个性质来解决问题。 引入一个数组height,height[i]代表排名为i的后缀与排名为i-1的后缀的最长公原创 2016-12-28 09:32:23 · 632 阅读 · 0 评论 -
后缀数组 模板【JSOI2007】 bzoj1031 字符加密Cipher
后缀数组 处理多个字符串用AC自动机就很方便了,但是AC自动机需要空间巨大,很可能爆内存,后缀数组被引入了。 后缀数组主要是两个数组 第一个是sa数组,sa[i]代表排名为i的后缀的首字母的位置; 第二个是rnk数组,rnk[i]代表首字母位置为i的后缀的排名。 最先要做的就是求出这两个数组。 其实有很简单的办法,那就是把后缀sort一下,拍个序,统计一下排名,万事大吉。 如果时间复原创 2016-12-28 08:51:34 · 616 阅读 · 0 评论 -
bzoj4199 [Noi2015]品酒大会 后缀数组+并查集
题目大意: 定义字符串s的两个子串为r相似的当起始位置不同的两个长度为r子串完全相同。 第一问: 对于每一个r,求出r相似的子串有多少对,0<=r#include <cstdio> #include <algorithm> #include <iostream> #define N 320000 using namespace std; typedef long long LL; const L原创 2017-07-04 17:04:52 · 446 阅读 · 0 评论