zoukankan      html  css  js  c++  java
  • Border Theory 学习笔记

    Border Theory 学习笔记

    \(~~~~\) 膜拜 sh。

    一、周期

    \(~~~~\) 1.定义: 若字符串 \(s\) 某个前缀重复若干次(可以非整数,但次数 \(\times\) 该前缀长度为整数)可得到该字符串,则该前缀的长度被称作 \(s\) 的周期。

    \(~~~~\) 形式化地,即对于字符串 \(s\) ,正整数 \(p\) 满足 \(s\) 可被表示为 \(pre(s,p)^x\) ,则称 \(p\)\(s\) 的周期。同时定义 \(per(s)\)\(s\) 的最小周期。

    \(~~~~\) 2.弱周期定理

    \(~~~~~~~~\) ①.内容 :若 \(p,q\)\(s\) 的周期,且 \(p+q \leq |s|\) ,则 \(\gcd(p,q)\)\(s\) 的周期。

    \(~~~~~~~~\) ②.证明 :若 \(i\geq p\) ,由周期定义应有:\(s_i=s_{i-p}\)

    \(~~~~~~~~~~~~~~~~~~~~~~~~\)\(i+q\leq |s|\) ,由周期定义应有:\(s_i=s_{i+q}\)

    \(~~~~~~~~~~~~~~~~~~~~~~~~\) 综上有:\(s_{i-p}=s_{i+q} \Rightarrow\) \(q-p\) 也是一个周期。

    \(~~~~~~~~~~~~~~~~~~~~~~~~\) 注意到这就可以用更相减损来迭代下去,进而得到 \(\gcd\)

    二、Border

    \(~~~~\) 1.定义 :若字符串 \(s\) 其长为 \(p\) 的前缀与长为 \(q\) 的后缀相同,则 \(p\)\(s\) 的一个border.

    \(~~~~\) 形式化地,若对于字符串 \(s\),有正整数 \(p\) 满足 \(pre(s,p)=suf(s,p)\) ,则 \(p\)\(s\) 的一个border。

    \(~~~~\) 2.求法——KMP: 定义 \(nxt_i\) 表示字符串 \(s\) 的长为 \(i\) 的前缀的 border,注意到这其实类似于串与自己作匹配,所以我们暴力匹配,当匹配不上时利用已求得的 \(nxt\) 减少需要重新匹配的即可。

    三、失配树

    \(~~~~\) 我也不太知道这东西有什么其他用处。

    \(~~~~\) 1.例题: 给定一个字符串,\(q\) 组询问,每次询问该字符串长为 \(x\) 的前缀和长为 \(y\) 的前缀的最长公共border.

    \(~~~~\) 注意到某个前缀的 border 的 border 还是这个前缀的 border ,那么我们就可以不停地跳 border,并且注意到这个过程类似于跳树上LCA,所以直接倍增处理即可。

    四、Border Theory

    \(~~~~\) 1. Lemma: 字符串 \(s\) 的所有不小于 \(\frac{|s|}{2}\) 的 border 构成等差数列。

    \(~~~~\) 证明: 记:\(s\) 最大的 border 为 \(n-p\) ,另有一个 border 为 \(n-q\) ,(\(p,q\leq \frac{|s|}{2}\)),则 \(p,q\)\(s\) 的两个周期,由弱周期定理可知:\(\gcd(p,q)\) 也是周期,故 \(n-\gcd(p,q)\) 也是 border 。又因为 \(\gcd(p,q)\leq p\) ,且 \(n-p\) 为最大的 border,即 \(p\) 为最小的周期,故 \(\gcd(p,q)=p\) ,故 \(p|q\) 。故字符串 \(s\) 所有不小于 \(\frac{|s|}{2}\) 的构成等差数列,且公差为 \(p\)

    \(~~~~\) 2. 推论: 字符串 \(s\) 的所有 border 按长度排序后可被划为 \(\log |s|\) 段等差数列。

    \(~~~~\) 证明: 暂且利用上面的引理,每次减去一半感性证明,具体待填坑。

  • 相关阅读:
    线段树优化dp——牛客多校第一场I(好题)
    字符串dp——牛客多校第五场G
    凑出和相等的k组数,玄学结论——hdu6616
    主席树/线段树模拟归并排序+二分答案(好题)——hdu多校第4场08
    思维题+贪心——牛客多校第一场C
    线性基算贡献——19牛客多校第一场H
    俞敏洪语录
    睡眠长短决定寿命!人每天应该睡多少小时
    Java程序员从笨鸟到菜鸟之(三十一)大话设计模式(一)设计模式遵循的七大原则
    spring源码剖析(五)利用AOP实现自定义Spring注解
  • 原文地址:https://www.cnblogs.com/Azazel/p/15759241.html
Copyright © 2011-2022 走看看