专栏文章
P12960 题解
P12960题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mindp41b
- 此快照首次捕获于
- 2025/12/02 00:43 3 个月前
- 此快照最后确认于
- 2025/12/02 00:43 3 个月前
首先我们分析 的策略:设 为空串,对于 , 会将 重排为字典序 的所有串中,字典序最小的那一个。正确性显然。
考虑如何构造方案:枚举 的长度,找到最大的长度 使得以下条件之一成立:
- 在 串内,存在一个不属于 的字符 ,使得 。
- 对于当前的 , 串为 串的非严格前缀(可以有 的情况)。
直接用桶记录每个元素出现次数即可判定,对于给定的方案我们可以做到 。
Subtask #1
因为 ,所以至多有 种本质不同的分割方式,我们考虑直接枚举这些分隔点,对每种情况模拟 的最优策略即可,时间复杂度 。
值得一提的是,当 时我们可以在线性时间复杂度内解决这个问题。只需要从左往右移动唯一的分割点,对左侧 和右侧 分别开一个桶维护每种字符出现次数。移动一次分界点只会在左侧的桶中假如一个元素、在右侧的桶中删除一个元素,修改/判定都是 的,因此总时间复杂度可以做到 。
Subtask #2
由上一个子任务我们已经可以解决 的情况。
对于 的情况,每个子串都只有一个字符, 无法有效重排任何一个子串,所以只需要比较原串相邻字符的字典序即可在 时间复杂度内解决问题。
对于 的情况,我们发现对 的限制是松的,考虑找出能使 必胜的最小子结构:
- 如果 不是有序字符串, 可以直接选取第一对相邻的 ,直接将它们拆成 ,此时必定有 ,那么 必不可能获胜。
- 否则,如果 中出现了连续 个(及以上)的相同字符 ,那么直接拆成 ,那么此时必定有 , 同样必败。
- 否则, 显然必败,归纳法不难证明。
仅剩 的最困难情况尚未解决。假设 将字符串 拆分为三部分 (即 )。显然:
- 若以 对应构造方式分割子串 结果为 时 获胜,则 构成 下输入串 的有效分割方案。
- 若以 对应构造方式分割子串 结果为 时 获胜,则 同样构成 下输入串 的有效方案。
一个结论是:对任意字符串 , 获胜当且仅当上述两种情况之一成立。这并非显而易见:存在有效分割 既不满足 分割有效也不满足 分割有效的反例,例如输入串 XYAZXY 的分割 XY/AZ/XY。但在所有此类情形中,必然存在满足条件的其他有效分割方案。
以 XYAZXY 为例,XY/A/ZXY 即为有效分割(因 XY/A 满足 的获胜条件)。证法和 类似,同样考虑最小子结构,如果不能单独成段必定无解,否则所有有解情况和最小拆分情况必定一一对应。
最终,我们只需检验 能否在 条件下赢得 的某个前缀或后缀。总时间复杂度 。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...