后缀数组
文章平均质量分 72
ZLTJohn
这个作者很懒,什么都没留下…
展开
-
后缀数组(Suffix Array)学(复)习小记
前言后缀数组是个十分有用的东西,上一年就学过,结果又还给pdf了,如今再看一遍,好懂很多。 怎么说呢,get了height后,SA能解决很大一部分字符串问题。 后缀是什么大家都知道··· sa[i]表示第i小(大)后缀是哪里开头的后缀 rank[j]是是第j个后缀的排名弄出SA数组(DC3好恶心,学倍增实现!) 后缀数组关键就是要弄出后缀数组嘛。 我们现在有一个字符串r,好我们把它弄成i原创 2016-01-31 22:54:36 · 1567 阅读 · 0 评论 -
JZOJ4683 矩阵
题目大意给一个n*m的字符矩阵,求有多少个不同的子矩阵,字符集为大写英文字母。 n,m<=110分析先往哈希上面想想,直接暴力搞每一个矩阵的哈希值再判重是n6n^6,然后就开始优化。首先确定宽度,行数就可以递增地继承信息。而宽度的递增,也是可以继承的,最后就可以n4n^4。 实际上,我们确定宽度width以后,就可以转化为新矩阵,其中每一个元素都是原矩阵1*width的子矩阵。这样我们只用统计整原创 2016-08-11 21:58:52 · 1014 阅读 · 0 评论 -
[JZOJ5027]【NOI2017模拟3.25】历史行程
题目大意给一个长度为n的01字符串s,还有m个询问,每个询问有两个数l,r,问s的前缀s[1..l],s[1..l+1]…s[1..r]中的任意两个前缀的最长公共后缀是多少。 n,m<=100000分析首先可以把s反过来,这样就是问后缀的lcp了,询问记得也要反过来。 考虑弄出一个sa。 对于一个询问[l,r],答案是什么呢? 就是rank[l]..rank[r]按大小排后,即l~r所有位置原创 2017-03-29 22:08:43 · 894 阅读 · 0 评论 -
[后缀平衡树][JZOJ4384]hashit
题目描述有一个字符串s,一开始为空串,要求支持两种操作: 1, ‘c’,在s后面加入小写字母字符c。 2, ‘-‘,删除最后一个字符。 问每次操作过后s有多少个两两不同的字符串。 操作序列也是一个字符串。 操作序列长度<=10^5分析做法就是后缀平衡树啦…只是把后缀数组在线而已,height用哈希来维护,就是裸题了。 后缀平衡树实际上跟后缀数组没有大区别,优化的插入就是把rank用重量平原创 2017-11-27 22:21:49 · 366 阅读 · 0 评论