zoukankan      html  css  js  c++  java
  • 【WC笔记】字符串前沿算法

    Q1

    对于给定的字符串,求本质不同的子串数。

    A1

    在加入 $s_l$ 时,考虑 $s[l:r]$ 的上一次出现是 $s[k:k+r-l]$,那么应该在线段树上 $[r,k+r-l]$ 这个区间 $+1$。

    那么假设路径 $(x,y)$ 上的点都满足 $r_u=z$,且 $len[fa[x]]=a,space len[y]=b$,

    那么对线段树的贡献是一个类似平行四边形的加法,修改比较显然。

    查询 $s[l:r]$ 的本质不同的子串数的话,在假如 $s[l]$ 后查询线段树的第 $r$ 个位置即可。

    Q2

    对于给定的字符串 $s$,求 $s[l:r]$ 的后缀树节点数。

    source:《后缀树节点数》命题报告及一类区间问题的优化——陈江伦

    A2

    建出后缀树

    Q3

    这个 $idea$ 比较简单就直接放在一个题目里说了。

    维护一个字符串 $s$,支持在 $s$ 的某个位置插入一个字符串,删除 $s$ 某一段的字符串。

    可以看成是一个普通的文本编辑器。

    由于在文本编辑器里进行搜索的时候我们都是一个一个字母键入的,为了模拟这一过程,每次询问给出一个询问串 $p$,对于每一个 $1le ile |p|$,你需要回答 $p[:i]$ 在 $s[l:r]$ 中出现了多少次。

    只需要三个操作都比暴力快即可($O(|s|$)。

    A3

    块状链表

    Q4

    给定一个字符串 $s$,每次 $O(1)$ 询问 $s[l:r]$ 的最大后缀。

  • 相关阅读:
    用例图解析
    A B C D类网络地址
    B-树特征
    常用的中间代码
    UML图
    关于文件索引的一道习题
    数据流图的一些原则
    系统总线
    各种排序方法的时间复杂度、空间复杂度和稳定性统计表
    模拟银行自助终端系统
  • 原文地址:https://www.cnblogs.com/scx2015noip-as-php/p/wc20190126.html
Copyright © 2011-2022 走看看