1 条题解
-
0
E. 石头剪刀布机器人 详细题解
- 机器人行为与 Monocarp 的策略 机器人的手势序列完全由 Monocarp 的手势序列决定:
第 轮机器人出 Rock()。
对于 ,机器人第 轮出的手势是 Monocarp 的第 轮手势 。
这里 表示能击败 的手势:,,。
反过来,若我们确定了机器人的手势序列 (其中 ),则 Monocarp 的手势序列 也随之确定:
对于 ,,这里 是会被 击败的手势;
可以任意选择,我们可以让它击败 从而稳稳拿到 分。
因此,问题转化为:寻找一个长度为 的机器人手势序列 ,满足
;
是 的连续子串;
对应的总比分 Monocarp 净胜 (即 Monocarp 胜场 机器人胜场 )。 求最小的 。
- 相邻手势的得分贡献 将三种手势映射为数字: ,,。 对于第 轮(), 与 的胜负由 与 的关系决定(因为 )。 具体计算可得,第 轮的净得分(Monocarp 得分 机器人得分)为:
:若 (即 ,,);
:若 ;
:若 (即 ,,)。
最后一轮 ,Monocarp 可自由选择获胜,固定 分。 设整个序列的所有相邻对得分之和为 ,则总净胜 等价于 。
-
包含 的最优序列 我们将 设计为:一段前缀 + 子串 + 一段后缀 ,其中前缀以 开始并以 结束,后缀从 出发可以走到任意状态结束。 设 内部的相邻对得分之和为 (固定值),所需的最小额外得分 (若 则 )。 前缀的内部得分记为 ,边数(转移步数)为 ;后缀的步数为 ,我们总可以让后缀每一步都获得 (沿着 beat 方向行走),因而后缀得分 。 总净得分条件化为 。 我们需要最小化额外总长度 ,最终答案 。
-
前缀的最优选择 从 走到 的最优路径可以只考虑无环的基础路径,因为任何绕圈都可以用长度为 的“beat 环”替代,该环长度增加 、得分增加 ,不改变 的值。
三种目标状态的基础路径如下(给出 、得分 和 ):
: 路径 :,,。
: 路径 :,,,; 路径 :,,,。
: 路径 :,,,; 路径 :,,,。
对于一条基础路径,我们可以任意添加若干个长度为 的 beat 环(每个环增加 长度和 得分)来调节 的大小。 使用后缀填补得分的代价是 ,于是该路径的总代价为 。 若 ,可取 ,此时 ; 若 ,则 ,。
对所有可能的基础路径取最小 ,即得到最小额外长度 。
- 算法总结
计算 的内部得分 ,令 。
若 :不需额外得分,只需保证 。
若 ,则 ;
否则需要至少一步前缀(),。
若 :根据 枚举上述基础路径,按公式计算最小代价 ,答案 。
具体而言:
: 。
:
若 ,可选用路径 得到 ;
否则比较路径 ()和路径 (),取 。
:
若 ,路径 给出 ;
否则(实际上 时 );路径 只会更大。
时间复杂度:每个测试用例 ,总复杂度 。
- 1
信息
- ID
- 7283
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者