后缀数组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$表查一下就完了。

posted @ 2019-12-23 19:50  tdcp  阅读(137)  评论(0编辑  收藏  举报