• 后缀自动机小结


    2555: SubString

      要支持动态维护right集合的大小,用LCT维护parent树即可。

    2882: 工艺

      最小表示法。从根节点开始走n步,每次选可选的字典序最小的转移即可。

    2806: [Ctsc2012]Cheat

      答案显然满足可二分性,于是我们二分l。

      设f[i]为i以前最大的熟悉长度,mat[i]代表位置i以前和母串最多匹配多少位。

      f[i]=max(f[i-1],f[j]+i-j),i-mat[i]<=j<=i-l。

      因为mat[i]<=mat[i-1]+1,所以可以转移的区间的左右端点是不减的。于是就变成了经典的单调队列优化。

    3238: [Ahoi2013]差异

      s的反串s'的后缀自动机的parent树就是s的后缀树,然后两个后缀suffix(x)和suffix(y)的lcp=lca(x,y)对应的最大子串长度。

      在parent树上进行一边树形dp即可,计算lca贡献的答案。

    2946: [Poi2000]公共串

      记录当前结点的这次最长匹配长度和历史最小匹配长度。注意要将匹配长度向祖先更新。

    3926: [Zjoi20150]诸神眷顾的幻想乡

      枚举叶子建出广义后缀自动机即可。

    3756: Pty的字符串

      在parent树上预处理一些值最后匹配一次就好。

    1396: 识别子串

      考虑枚举只出现一次的子串的右端点,它对应的左端点一定是从1开始到对应最短位置p的区间。

      对于[1,p],我们可以更新的长度是一条斜率为-1的直线。对于[p+1]到右端点,可以更新的长度为定值。

      按截距排序,用并查集做两次就好。

    3473: 字符串

      建出广义后缀自动机,这样对于每个字符串的前缀,trans(root,prefix)的对应最大子串长度一定等于|prefix|。

      统计每个状态字符串的出现在多少个字符串中,对于出现次数>=k的状态我们可以将它维护的子串数量加入答案。

    3145: [Feyat cup 1.5]Str

      感觉后缀数组按height大到小合并的过程就是parent树丛叶子到跟的过程呢。

  • 相关阅读:
    memcached +mysql+php 例子
    PHP利用memcache缓存技术提高响应速度
    实现QQ第三方登录教程(php)
    php如何解决多线程同时读写一个文件的问题
    php数组函数常见的那些
    PHP 5种方式获取文件后缀名
    函数与方程
    函数图像习题
    高中数学中需要重点关注的函数和图像
    特殊分段函数的图像画法
  • 原文地址:https://www.cnblogs.com/iamCYY/p/5076339.html
Copyright © 2020-2023  润新知