zoukankan      html  css  js  c++  java
  • 从0开始的字符串生活(选手命要没了)

    一.模板复习
    1.SA
    倍增排序,每次排序,以前半个串为第一关键字,后半个串为第二关键字排序,排序可以用基数排序,复杂度O(nlogn)

    一些比较适合在SA上做的题目:
    1.LCP长度有关
    2.一个经典套路:SA上按height启发式合并,例题:1.shopee杯武大校赛2019正赛C题 2.洛谷“小W与数列”
    通常用来维护和LCP有关的最小化/最大化题目。

    2.SAM
    https://www.cnblogs.com/zjp-shadow/p/9218214.html#autoid-4-1-0
    这位大佬已经讲得非常非常清楚了,无需我再啰嗦。
    PS:本质不同子串个数不需要dp,直接求(sum (maxlen_i-maxlen_{fa_{i}})),这个是可以在线维护的。
    拓展:广义SAM。
    构建多串trie,用bfs序加入后缀自动机。

    二.一句话题解
    以下是按照洛谷题单"StringSuffixStructures I"写的

    1.模板 广义后缀自动机
    统计n个串的本质不同子串,就是先建广义SAM,然后对每个节点的maxlen-minlen求和
    注意几个坑点:
    1.按照我的写法,后缀自动机的空串节点是1,0是无意义节点。
    2.记得连边(第一次是跳到直到有字符c的出边,第二次是跳到字符c的出边不再指向q)
    3.后缀自动机要开两倍大小(节点数上界是2n-1)

    2.[八省联考2018]制胡窜
    先用线段树合并维护endpos,大力讨论

    3.[NOI2018]你的名字

  • 相关阅读:
    WEB
    Python
    Git
    JavaScript
    鸡汤
    面向对象
    Python
    Python
    MongoDB
    Oracle 11g 安装
  • 原文地址:https://www.cnblogs.com/thedreammaker/p/13023481.html
Copyright © 2011-2022 走看看