1 条题解
-
0
自动搬运
来自洛谷,原作者为

ix35
垒球搬运于
2025-08-24 22:47:58,当前版本为作者最后更新于2023-06-03 23:32:48,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
橙垒球
定义 表示( 的)以 开头的后缀。
我们首先将字典序反转,那么最大后缀就变成了最小的不是其他后缀的前缀的后缀。
定义 1:若 小于它的所有真后缀,则称 是 Lyndon 串;若 是 Lyndon 串且 ,其中 为 的前缀,则称 是近似 Lyndon 串;若 是 Lyndon 串且 ,则称 是 Necklace。
定义 2:定义一个后缀 是 Significant Suffix,当且仅当存在一个 使得 。
考虑 Duval 算法求最大后缀,不难发现 的最大后缀就是 Duval 算法第一次运行完 的末尾时对应的近似 Lyndon 串,同时它是 的最长的 Significant Suffix。
设 ,于是: 是近似 Lyndon 串, 也是近似 Lyndon 串。
模拟 Duval 算法可知, 是 的前缀(也可以根据 Significant Suffix 的结构发现),同时下一个字符 必须大于 (否则 也等于 了))。
由于我们现在希望字典序最小,所以最佳的选择就是让 比 恰好大 ,而后面的部分 可以重复前面的模式 进行循环。由于 是近似 Lyndon 串,所以把它的最后一个字符增大 得到一定就是 Lyndon 串,于是 确实是一个 Lyndon 串的若干次方加上一个前缀,符合近似 Lyndon 串的要求。
大致结构如下(每种颜色是一个字符, 表示比对应颜色字符恰好大 的字符):

但是上面的只是一种情况,如果 不能表示成若干个完整的循环,那么就会出问题:Duval 算法加入 后会把前面的完整循环截断,但是并不会恰好截到 这个位置。为了让它恰好截到 这个位置,我们可以让 增大 ,这样一来前缀 自成一个 Lyndon 串,截断时自然会把它截去。
大致结构如下:

考虑何时会无解:如果 比 还要短,那么第一个循环都没办法完全填完,这时就会无解(这个结论有另外两种理解:一种是 Duval,由于截断后保留的是前一段 Lyndon 因子的前缀,所以截掉的长度一定大于一半;另一种是 Significant Suffix, 和 都是 Significant Suffix,因此前者的长度大于后者的两倍)。
如果我们构造完了后缀 ,就可以利用上面的方法得到 ,同时由于 的前缀是 ,所以最小化 就等价于最小化 ,优化目标一样,所以可以直接递归后缀 。当然,这和从后往前贪心是等价的。
时间复杂度为 。
- 1
信息
- ID
- 8551
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者