1 条题解

  • 0
    @ 2026-5-19 23:27:05

    E. 石头剪刀布机器人 详细题解

    1. 机器人行为与 Monocarp 的策略 机器人的手势序列完全由 Monocarp 的手势序列决定:

    11 轮机器人出 Rock(RR)。

    对于 i2i \ge 2,机器人第 ii 轮出的手势是 beat(\text{beat}( Monocarp 的第 i1i-1 轮手势 ))

    这里 beat(x)\text{beat}(x) 表示能击败 xx 的手势:beat(R)=P\text{beat}(R)=Pbeat(P)=S\text{beat}(P)=Sbeat(S)=R\text{beat}(S)=R

    反过来,若我们确定了机器人的手势序列 B[1..m]B[1..m](其中 B[1]=RB[1]=R),则 Monocarp 的手势序列 M[1..m]M[1..m] 也随之确定:

    对于 i=1m1i=1 \dots m-1M[i]=lose_to(B[i+1])M[i] = \text{lose\_to}(B[i+1]),这里 lose_to(y)\text{lose\_to}(y) 是会被 yy 击败的手势;

    M[m]M[m] 可以任意选择,我们可以让它击败 B[m]B[m] 从而稳稳拿到 11 分。

    因此,问题转化为:寻找一个长度为 mm 的机器人手势序列 BB,满足

    B[1]=RB[1]=R

    ssBB 的连续子串;

    对应的总比分 Monocarp 净胜 >0>0(即 Monocarp 胜场 - 机器人胜场 >0>0)。 求最小的 mm

    1. 相邻手势的得分贡献 将三种手势映射为数字: R=0R=0P=1P=1S=2S=2。 对于第 ii 轮(1im11 \le i \le m-1), M[i]M[i]B[i]B[i] 的胜负由 B[i]B[i]B[i+1]B[i+1] 的关系决定(因为 M[i]=lose_to(B[i+1])M[i] = \text{lose\_to}(B[i+1]))。 具体计算可得,第 ii 轮的净得分(Monocarp 得分 - 机器人得分)为:

    +1+1:若 B[i+1]B[i]2(mod3)B[i+1] - B[i] \equiv 2 \pmod 3(即 RSR \to SPRP \to RSPS \to P);

    1-1:若 B[i]=B[i+1]B[i] = B[i+1]

    00:若 B[i+1]B[i]1(mod3)B[i+1] - B[i] \equiv 1 \pmod 3(即 RPR \to PPSP \to SSRS \to R)。

    最后一轮 mm,Monocarp 可自由选择获胜,固定 +1+1 分。 设整个序列的所有相邻对得分之和为 Σ\Sigma,则总净胜 >0>0 等价于 Σ0\Sigma \ge 0

    1. 包含 ss 的最优序列 我们将 BB 设计为:一段前缀 PP + 子串 ss + 一段后缀 QQ,其中前缀以 RR 开始并以 s[0]s[0] 结束,后缀从 s[1]s[-1] 出发可以走到任意状态结束。 设 ss 内部的相邻对得分之和为 inner\text{inner}(固定值),所需的最小额外得分 K=innerK = -\text{inner}(若 inner0\text{inner} \ge 0K0K \le 0)。 前缀的内部得分记为 spsp,边数(转移步数)为 lenP=P1\text{len}_P = |P|-1;后缀的步数为 qq,我们总可以让后缀每一步都获得 +1+1(沿着 beat 方向行走),因而后缀得分 sq=qsq = q。 总净得分条件化为 sp+inner+q0    sp+qKsp + \text{inner} + q \ge 0 \implies sp + q \ge K。 我们需要最小化额外总长度 L=lenP+qL = \text{len}_P + q,最终答案 m=s+Lm = |s| + L

    2. 前缀的最优选择 从 RR 走到 x=s[0]x = s[0] 的最优路径可以只考虑无环的基础路径,因为任何绕圈都可以用长度为 33 的“beat 环”替代,该环长度增加 33、得分增加 33,不改变 (lenPsp)(\text{len}_P - sp) 的值。

    三种目标状态的基础路径如下(给出 lenP\text{len}_P、得分 spspD=lenPspD = \text{len}_P - sp):

    x=Rx = R: 路径 EElen=0\text{len}=0sp=0sp=0D=0D=0

    x=Px = P: 路径 AARPR \to Plen=1\text{len}=1sp=0sp=0D=1D=1; 路径 BBRSPR \to S \to Plen=2\text{len}=2sp=2sp=2D=0D=0

    x=Sx = S: 路径 CCRSR \to Slen=1\text{len}=1sp=1sp=1D=0D=0; 路径 DDRPSR \to P \to Slen=2\text{len}=2sp=0sp=0D=2D=2

    对于一条基础路径,我们可以任意添加若干个长度为 33 的 beat 环(每个环增加 33 长度和 33 得分)来调节 spsp 的大小。 使用后缀填补得分的代价是 q=max(0,Ksp)q = \max(0, K - sp),于是该路径的总代价为 C=lenP+max(0,Ksp)C = \text{len}_P + \max(0, K - sp)。 若 spKsp \le K,可取 q=Kspq = K - sp,此时 C=K+DC = K + D; 若 sp>Ksp > K,则 q=0q = 0C=lenPC = \text{len}_P

    对所有可能的基础路径取最小 CC,即得到最小额外长度 LL

    1. 算法总结

    计算 ss 的内部得分 inner\text{inner},令 K=innerK = -\text{inner}

    K0K \le 0:不需额外得分,只需保证 B[1]=RB[1]=R

    s[0]=Rs[0] = R,则 m=sm = |s|

    否则需要至少一步前缀(Rs[0]R \to s[0]),m=s+1m = |s| + 1

    K>0K > 0:根据 x=s[0]x = s[0] 枚举上述基础路径,按公式计算最小代价 LL,答案 m=s+Lm = |s| + L

    具体而言:

    x=Rx = RL=KL = K

    x=Px = P

    K2K \ge 2,可选用路径 BB 得到 L=KL = K

    否则比较路径 AAL=K+1L = K + 1)和路径 BBL=2L = 2),取 min(K+1,2)\min(K+1, 2)

    x=Sx = S

    K1K \ge 1,路径 CC 给出 L=KL = K

    否则(实际上 K>0K > 0K1K \ge 1L=KL = K;路径 DD 只会更大。

    时间复杂度:每个测试用例 O(s)O(|s|),总复杂度 O(s)2105O(\sum |s|) \le 2 \cdot 10^5

    • 1

    信息

    ID
    7283
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    1
    已通过
    1
    上传者