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

  • 相关阅读:
    Python操作MySQL数据库
    Spark学习--Structured Streaming
    YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
    Spark学习--SparkStreaming
    Spark学习--SparkSQL04
    Spark学习--SparkSQL03
    Spark学习--SparkSQL02
    Bootstrap简介
    Linux Shell系列教程之(一)Shell简介
    Linux命令之必须掌握的十条命令
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12088033.html
Copyright © 2020-2023  润新知