1 条题解

  • 0
    @ 2026-8-25 10:01:34

    题解

    思路

    N=n+mN=n+m。当 N=0N=0 时,答案为 00。以下只讨论非空字符串。

    一个非空 01 串的极长颜色段数,等于 11 加上相邻字符不同的位置数。因此可以分别统计所有字符串各自贡献的第一个颜色段,以及所有相邻异色位置的贡献。

    恰含 nn0 的长度为 NN 的字符串有 (Nn)\binom Nn 个。固定一个相邻位置,并指定这两位为 0110,剩余 N2N-2 位需要放置 n1n-10,共有 2(N2n1)2\binom{N-2}{n-1} 种。相邻位置共有 N1N-1 个,所以

    f(n,m)=(Nn)+2(N1)(N2n1).f(n,m)=\binom Nn+2(N-1)\binom{N-2}{n-1}.

    n=0n=0m=0m=0 时,第二项为 00,公式给出唯一单色串的一个颜色段。

    做法

    先读入全部询问,找到最大的 n+mn+m。预处理阶乘与逆阶乘,并用费马小定理求最高阶乘的逆元,再递推得到其余逆阶乘。每个组合数可在常数时间内计算,将其代入上式即可。

    正确性证明

    每个非空字符串恰好为基础项贡献一次,因此基础项总和是 (Nn)\binom Nn。任取一个相邻位置,形成 0110 后,其余位置有 (N2n1)\binom{N-2}{n-1} 种选择;两个方向共计 2(N2n1)2\binom{N-2}{n-1}。对全部 N1N-1 个相邻位置求和,得到全部字符串的相邻变化总数。两部分相加正好等于所有字符串的极长颜色段数之和,所以算法正确。

    复杂度

    设所有询问中的最大 n+mn+mMM。时间复杂度为 O(M+T)O(M+T),空间复杂度为 O(M+T)O(M+T)

    • 1

    信息

    ID
    1043
    时间
    2000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    1
    已通过
    0
    上传者