Border Theory 学习笔记
Border Theory 学习笔记
膜拜 sh。
一、周期
1.定义: 若字符串 某个前缀重复若干次(可以非整数,但次数 该前缀长度为整数)可得到该字符串,则该前缀的长度被称作 的周期。
形式化地,即对于字符串 ,正整数 满足 可被表示为 ,则称 为 的周期。同时定义 为 的最小周期。
2.弱周期定理
①.内容 :若 为 的周期,且 ,则 为 的周期。
②.证明 :若 ,由周期定义应有: ;
若 ,由周期定义应有:;
综上有: 也是一个周期。
注意到这就可以用更相减损来迭代下去,进而得到 。
二、Border
1.定义 :若字符串 其长为 的前缀与长为 的后缀相同,则 为 的一个border.
形式化地,若对于字符串 ,有正整数 满足 ,则 为 的一个border。
2.求法——KMP: 定义 表示字符串 的长为 的前缀的 border,注意到这其实类似于串与自己作匹配,所以我们暴力匹配,当匹配不上时利用已求得的 减少需要重新匹配的即可。
三、失配树
我也不太知道这东西有什么其他用处。
1.例题: 给定一个字符串, 组询问,每次询问该字符串长为 的前缀和长为 的前缀的最长公共border.
注意到某个前缀的 border 的 border 还是这个前缀的 border ,那么我们就可以不停地跳 border,并且注意到这个过程类似于跳树上LCA,所以直接倍增处理即可。
四、Border Theory
1. Lemma: 字符串 的所有不小于 的 border 构成等差数列。
证明: 记: 最大的 border 为 ,另有一个 border 为 ,(),则 为 的两个周期,由弱周期定理可知: 也是周期,故 也是 border 。又因为 ,且 为最大的 border,即 为最小的周期,故 ,故 。故字符串 所有不小于 的构成等差数列,且公差为 。
2. 推论: 字符串 的所有 border 按长度排序后可被划为 段等差数列。
证明: 暂且利用上面的引理,每次减去一半感性证明,具体待填坑。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通