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]$ 的最大后缀。

  • 相关阅读:
    物理机异常断电,linux虚拟机系统磁盘mount失败,导致无法启动; kubectl 连接失败
    [Docker] 制作并运行 Nginx 镜像
    [Docker] 在CentOS6.8 安装 Docker
    47.DOM例题
    46.脚本化css2
    44 脚本化操作css
    43.操作标签属性
    42回顾
    41:例题、知识点复习
    40.数组字符串例题
  • 原文地址:https://www.cnblogs.com/scx2015noip-as-php/p/wc20190126.html
Copyright © 2011-2022 走看看