2 条题解

  • 0
    @ 2025-4-27 21:08:30

    Accepted Contest Solution (With Syntax Fixes).

    Source: http://8.136.99.126/record/67ff11b57aadac7b413bd2ff

    Author:

    A{0,1}A \in \{ 0, 1 \},则 1A=A1\sharp A=A0A=10 \sharp A=1

    即如果 A=1A=1 状态保持 11;如果 A=0A=0 状态变为 00

    定义 f(0)=1,f(i)=f(i1)Ai,1iNf(0)=1, f(i)= f(i-1)\sharp A_i, 1\leq i\leq N,我们需要统计 f(N)=1f(N)=1 的串的个数。

    定义 G(N)G(N) 为从初始状态 11 出发,经过长度为 NN 的 01 串最终状态为 11 的串的个数。

    G(0)=1G(0)=1(显然),G(1)=1G(1)=11A=A1 \sharp A = A,只有 A=1A=1 可以使 f(1)=1f(1)=1)。

    考虑 N2N\ge2,从初始状态 11 出发,经过长度为 NN 的 01 串 A1A2ANA_1A_2\cdots A_N。我们讨论串的第一位 A1A_1 的两种情况:

    第一位为 11

    • 初始状态 1 经 111\sharp1 得到 f(1)=1f(1)=1
    • 此时余下的串 A2ANA_2\cdots A_N 长度为 N1N-1,问题变为「从状态 11 出发读入 N1N-1 位 01 串,使最终状态为 11」。
    • 这种情况的串数为 G(N1)G(N-1)

    第一位为 00

    • 初始状态 11101\sharp0 得到 f(1)=0f(1)=0
    • 接下来读入 A2A_2 时,由于当前状态为 00,有 f(2)=0A2=1f(2)=0\sharp A_2=1
      且无论 A2A_20011(即有 22 种选择),状态都变为 11
    • 此后余下的串 A3ANA_3\cdots A_N 长度为 N2N-2,要求从状态 11 出发最终状态为 11,对应的串数为 G(N2)G(N-2)
    • 综上,这种情况的串总数为 2×G(N2)2\times G(N-2)

    两类情况互不重叠且覆盖所有长度为 NN 的 01 串,因此 G(N)=G(N1)+2×G(N2)G(N)=G(N-1)+2\times G(N-2)

    信息

    ID
    145
    时间
    1000ms
    内存
    512MiB
    难度
    7
    标签
    递交数
    6
    已通过
    3
    上传者