[Leaf] [CF2164D] Copy String
cf2164d---copy-string">CF2164D - Copy String
1. 核心逻辑
-
模型抽象:
- 给定变换规则 ,本质上是字符在单次操作中最多向右移动 1 位。
-
破局路径:
-
位移转化: 目标字符串 的位置 需要字符 ,该字符必须由 中的某个位置 贡献。满足 且 。
-
贪心匹配: 为使总步数最小,对于每个 ,应选择满足条件的最大索引 。这可以通过从右向左的一次线性扫描完成。
-
不变量判定: 单次操作最大位移为 1,故位置 就位所需的步数为 。全局最小步数即为所有位置位移的最大值 。
-
构造仿真: 在第 步时,位置 的字符取决于其目标来源索引与当前传播距离的权衡,即 。
-
-
细节处理:
-
使用
a = ' ' + a进行 1-indexed 偏移对齐。 -
若某个字符无法在左侧找到匹配项,则输出 -1。
-
若 ,输出 -1。
-
2. 代码实现
▶
AcCode
1 | |
3. 复盘
-
复杂度: 用于输出,逻辑匹配为 。
-
灵感反思: 该变换规则初看具有递归性( 依赖于 ),但拆解后发现其本质是扩散。通过维护 offset 数组,将动态的传播过程静态化为“距离”计算,是典型的构造降维思路。
-
关联母题: 构造策略
[Leaf] [CF2164D] Copy String
http://miqiu.space/posts/ed8782a8/