Significant Suffixes
我们定义 表示 中可能成为最小后缀的后缀,形式化定义为
- 记 表示 的所有后缀;
- 记 表示 的最小后缀;
- 定义 为 ;
下面给出 的两个性质
#
对于 且 有 是 的 ,证明如下:
由于 都是 的后缀,所以必定存在包含关系,所以 是 的后缀。
如果 不是 的前缀,无论向串后面加怎样的 ,那么 与 的大小关系由 和 决定,所以 只有一者有可能是属于 ,矛盾,所以 是 的前缀。
所以 一定是 的 .
#
对于 且 有 ,证明如下:
考虑反证 ,由 可知 是 的 ,所以有 的周期 ,则有 .
向串后面加入任何字符串 ,那么若 则 ,注意到 也是后缀,所以 必定不可能为最小后缀,而若是 而 也不可能为最小后缀,矛盾,所以 .
根据 ,有 .
#
考虑用线段树合并维护 的集合,合并 的 时由于 所以 中至多有 个属于 .
考虑如何选出那个元素,设 不妨设 ,如果 不是 的 ,那么 可以排除,否则 可以排除,设最后留存的为 ,直接使 ,能够保证复杂度,但是常数较大,考虑挑出 中不合理的.
然后考虑 ,那么
- 若 是 的前缀,不做任何操作;
- 若 不是 的前缀,且 ,抛弃 ;
- 若 不是 的前缀,且 ,抛弃 ;
这样可以有效减小常数。
查询时,我们将 的集合全部检查一遍,检查和合并时我们需要比较两个字符串的大小,修改时由于影响到 个线段树节点,而且被修改区间完整覆盖的 不发生变化,所以总共需要 次比较,考虑使用数据结构维护 二分实现,这样需要 次查询和 次修改,由于查询和修改不平衡,可以使用 修改和 查询的分块维护。总复杂度为 .
作者:littlepinkpig
出处:https://www.cnblogs.com/littlepinkpig/p/18498231
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
你可以在这里自定义其他内容
作者:littlepinkpig
出处:https://www.cnblogs.com/littlepinkpig/p/18498231
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现