Cage 字符串听课笔记

困困困!

KMP

注意到 KMP 的复杂度是均摊的,那么是否可以绕开?

注意到 KMP 实际上一个串的 ACAM,那么考虑可以类似的,在加入一个字符的同时维护 ACAM(考虑 ACAM 的构建过程,前面的点不会被影响)那么每次就可以通过 O(|Σ|) 的修改(或者利用可持久化数据结构达到 O(log|Σ|)

但是似乎还有不依赖字符集以及数据结构的做法。先导入一些定义,定理。

  • border: 若 k 满足 S1k=Snk+1n 那么 S1kS 的 border。
  • period: 若 k[1,nk]s.t.Si=Si+k,那么 k 是一个周期。

如果存在长度为 k 的 border,那么存在长度为 nk 的 period

Weak Period Theory

p,q 均为周期,那么 gcd(p,q) 也为周期!

border 的 O(logn) 等差数列

话是说如果将一个串的所有 border/period 排序,那么可以划分为 O(logn) 个等差数列。

如何证明,考虑最长的 border,以及其对应的最小的周期。如果这个 border 长度 n2,那么不断的减去这个周期就可以构造出新的 border。由于这个周期是最小的,所以中间不会有更多的 border 存在。

但是当这个串减到 n2 那么此时可能存在新的 border 并不是由最大的那个减过来的。但是此时可以进入子问题,问题减半。

于是 border 可以划分为 O(logn) 个等差数列。

posted @   jeefy  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示