border 性质梳理
建议看到结论之后直接画图自己推
目前定义
定义:
可能证明会比较浅显,但仅供笔者理解。
nxt树定义:连边
- 周期性
周期定义:对于
,一个周期 等价于满足
因此有为一个 border 等价于存在一个周期 Kmp的
表示 ,是一个前缀的最大 。
- 总和性
对于
的所有 长度由以下代码给出:
int t=nxt[n];vector<int>border;while(t)border.push_back(t),t=nxt[t]
这等价于 nxt 树上的所有祖先。 证明仅需考虑假设一个
,那么可以推出 即可。 应用:
在 的出现次数,等价于 nxt 树上的点 的子树中所有 的节点个数。 变形:在
中, 的出现次数。构造 即可。
- 匹配性:
对于
为两个 border。
那么对于原串,任意一个位置满足 ,就有
证明:因为,所以 ,后续自证不难。
同时在 nxt 树上的视角,是 的祖先,且 属于子树 。自然属于子树 。
- 最小表示可行性
对于一个字符串
,若 为这个字符串循环最小表示的开头位置,一个必要条件是:
存在一个字符串,满足 是 最小值。 证明:这等价于对于后缀
,需要满足 ,对于后缀 ,需要满足
- 最小后缀相关
记后缀
。
记最小后缀为
设集合为在所有后缀后追加一个字符串 ,可能成为最小后缀的后缀。 更详细地,这个可能成为最小后缀的后缀
,满足对于 , ,对于 ,
性质:
中串互为前缀(因为仅凭当前信息无法判断大小,所以长度较小串是长度较大串的前缀),同时长度较小串也是长度较大串的后缀,所以是 border 关系
,有 。 证明:
若
,则显然有存在串 ,有 其中
可空。 考虑往后加入一个串
进行比较,则 相当于比较
- 若
,则可以推出 非空,且有后缀 优于 也就是 ,所以 并不是最小后缀,矛盾 应用:「JSOI2019」节日庆典
。
- 弱周期定理
若
为 的周期, ,那么 也是 的周期。
推论:更相减损术得是 的周期。
证明:
- 周期定理
若
为 周期, ,则 为 周期。 证明类同。
- 前缀周期定理
若
有周期 , 有周期 ,若 ,则 也有周期 。
证明很简单,考虑由若干个 重复组成。
- 等差数列定理 - version 1
对于
,串 在串 中的匹配位置为等差数列。
设匹配位置为。
我们考虑只保留串的 部分,则简化为了一个 为 的border的问题。
这样的话,我们不妨令这个新的串代替,下面表述以新串为主。
可以知道由于,所以这些匹配位置所代表的区间有交。
那么对于, ,因此 就成为了一个周期,且完全覆盖。
根据弱周期定理,可以得到匹配位置是一个等差数列。另一种想法:考虑两个周期
,可知 。因此这些个匹配位置之差都是一个周期,进而都是周期。
- 9.的重要推论:
考虑两个串
,定义集合 。 那么这也是个等差数列。
证明很简单,取出最大的
,然后很明显剩下的全是 的border。
- 等差数列定理 - version 2
一个串的
按长度排序后,可以划分为 个等差序列,也即周期同样可以。
反复运用 10.将字符串划分为
若干段,这样可以遍历完所有的border。按照这样分组后每组贡献一条 border 等差数列链。
- 设
的所有 border 长度为 ,则
这个感觉挺显然的,因为 若
,则
-
延续 12. 的定义,则有
,且差的那一部分恰可以从 里 的那部分元素补上来应用:QOJ 9372
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!