后缀数组1
Posted hzoi-cbx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后缀数组1相关的知识,希望对你有一定的参考价值。
A.Sandy的卡片
将所有差分之后串连起来,求$height$,二分答案转化为是否存在一段连续的区间使得这个区间中的$height$全部大于二分的值并且覆盖所有串。
B.喵星球上的点名
这题做法非常多。。。第一次用AC自动机暴力水过,顺便颓了题解,然后现在又做了一边就知道标签了。。
比较方便的做法是后缀数组+莫队,将所有串连在一起之后对于每个点名串的起始点二分求出一段区间,使这段区间中的$height$全部大于等于这个点名串长度,之后可以转化为区间数颜色问题,可以用很多方法,然而莫队可以在数颜色的同时顺便维护出第二问,所以比较好打。
C.字符串
$height$对长度取min让我们非常不爽,所以二分答案去掉长度的限制,然后仍然二分出包含$rk[c]$的一段连续区间,使$height$大于等于二分长度,主席树检验当前二分区间是否有在这个范围内的$rk$即可。
D.差异
求出$height$数组,用单调栈求出每个$height$作为最小值的区间,累加答案即可。
E.相似子串
一个结论:一个排名为i的后缀能够提供的本质不同子串数:$n-sa[i]-height[i]+1$,并且这些子串的排名按照后缀的排名递增。应该不难理解。
于是可以二分出第$k$个子串的位置,求$lcp$,$lcs$就完了。
F.品酒大会
几乎和差异一毛一样。。。就是多了个最大权值,$ST$表查一下就完了。
以上是关于后缀数组1的主要内容,如果未能解决你的问题,请参考以下文章