1 条题解

  • 0
    @ 2026-9-9 9:17:38

    题解

    思路

    固定所有新写入的数中的最大值 xx。

    做法

    第一次写出 xx 以前,初始黑板中缺少的每个 0,1,…,x−10,1,\ldots,x-1 都必须先各补一次,之后才能选出含有这些数的子集并令其 mex 为 xx。因此第一次写出 xx 至少需要 $\operatorname{need}(x)=1+\#\{i\mid 0\le i<x,\ i\text{ 没有在初始黑板中出现}\}$ 次操作,而且这段最短补全过程唯一。若 need⁡(x)≤K\operatorname{need}(x)\le K,余下的 K−need⁡(x)K-\operatorname{need}(x) 次操作可以任意写入 00 到 xx:这些数此时都已出现,任选 y≤xy\le x 时只需从黑板上选出 00 到 y−1y-1 并排除 yy,便能让 mex 等于 yy。于是余下操作形成的多重集合数是可重复组合数 (K−need⁡(x)+xx)\binom{K-\operatorname{need}(x)+x}{x}。不同 xx 对应最终新增数的不同最大值,直接求和即可。

    从 x=0x=0 开始扫描;初始令 need⁡=1\operatorname{need}=1,计入当前组合数后,若初始黑板中没有 xx,就将 need⁡\operatorname{need} 加一。可行的 xx 不会超过 N+K−1N+K-1。

    复杂度

    预处理到 N+KN+K 的阶乘与逆阶乘即可在常数时间求每个组合数,总时间复杂度为 O(N+K+log⁡998244353)O(N+K+\log 998244353),空间复杂度为 O(N+K)O(N+K)。

    • 1

    信息

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