1 条题解

  • 0
    @ 2026-9-3 10:34:12

    题解

    思路

    设一次“轮次”为一次洗牌后不断抽牌,直到抽到下一张小丑牌为止。每一轮结束后牌堆恢复原状并重新随机排列,因此各轮的随机结果独立同分布。

    记 XX 为一轮消耗的秒数,NN 为收集完全部数字牌时经历的轮数。总时间为前 NN 轮长度之和。

    一轮的期望长度

    固定一张数字牌。只看它与 mm 张小丑牌的相对次序,它在本轮被抽到,当且仅当它排在所有小丑牌之前。这个事件的概率为

    1m+1.\frac{1}{m+1}.

    由期望的线性性,一轮抽到的数字牌数期望为 nm+1\frac{n}{m+1}。本轮还一定会抽到作为终止标志的一张小丑牌,所以

    E[X]=1+nm+1=n+m+1m+1.\mathbb E[X]=1+\frac{n}{m+1}=\frac{n+m+1}{m+1}.

    需要的轮数

    考虑任意一个由 kk 张指定数字牌组成的集合 AA。一轮完全没有抽到 AA 中的牌,等价于在这 kk 张牌和 mm 张小丑牌中最先出现的是小丑牌,因此概率为

    mm+k.\frac{m}{m+k}.

    经过 rr 轮后,AA 中所有牌仍未出现的概率为 (mm+k)r\left(\frac{m}{m+k}\right)^r。对“至少有一张数字牌尚未收集”使用容斥,并利用非负整数随机变量的尾和公式,可得

    $$\begin{aligned} \mathbb E[N] &=\sum_{r\ge 0}\Pr(N>r)\\ &=\sum_{k=1}^{n}(-1)^{k+1}\binom nk \sum_{r\ge0}\left(\frac{m}{m+k}\right)^r\\ &=\sum_{k=1}^{n}(-1)^{k+1}\binom nk\frac{m+k}{k}. \end{aligned}$$

    使用两个经典容斥恒等式

    $$\sum_{k=1}^{n}(-1)^{k+1}\binom nk=1, \qquad \sum_{k=1}^{n}(-1)^{k+1}\binom nk\frac1k=H_n,$$

    其中 Hn=∑i=1n1iH_n=\sum_{i=1}^{n}\frac1i 为第 nn 个调和数,于是

    E[N]=mHn+1.\mathbb E[N]=mH_n+1.

    各轮独立同分布,NN 是以完整轮次结果为信息的停时,且期望有限。由 Wald 等式,所求总时间期望为

    $$\boxed{ \mathbb E[T] =(mH_n+1)\frac{n+m+1}{m+1} }.$$

    全部分母均小于模数 998244353998244353,可以用模逆元完成计算。

    做法

    子任务 1

    当 n=1n=1 时,H1=1H_1=1,公式直接化为 m+2m+2,时间和额外空间均为 O(1)O(1)。

    子任务 2

    当 n≤15n\le15 时,可以直接枚举所有非空数字牌子集。若子集大小为 kk,就把

    (−1)k+1m+kk(-1)^{k+1}\frac{m+k}{k}

    加入 E[N]\mathbb E[N],最后乘以一轮的期望长度。时间复杂度为 O(2nlog⁡998244353)O(2^n\log 998244353),额外空间复杂度为 O(1)O(1)。

    子任务 3

    先使用上面的化简式,只需计算 HnH_n。对每个 1≤i≤n1\le i\le n 独立使用快速幂计算 i−1i^{-1},时间复杂度为 O(nlog⁡998244353)O(n\log 998244353),额外空间复杂度为 O(1)O(1)。

    子任务 4

    在素数模数 p=998244353p=998244353 下,逆元满足

    $$\operatorname{inv}[1]=1, \qquad \operatorname{inv}[i] =p-\left\lfloor\frac pi\right\rfloor \operatorname{inv}[p\bmod i]\bmod p.$$

    线性递推所有 11 到 nn 的逆元并求和,即可得到 HnH_n。最后代入闭式。

    时间复杂度为 O(n+log⁡p)O(n+\log p),空间复杂度为 O(n)O(n)。

    复杂度

    四个层级的时间复杂度依次为 O(1)O(1)、O(2nlog⁡p)O(2^n\log p)、O(nlog⁡p)O(n\log p) 和 O(n+log⁡p)O(n+\log p);对应的额外空间复杂度依次为 O(1)O(1)、O(1)O(1)、O(1)O(1) 和 O(n)O(n)。

    正确性证明

    一轮长度公式由对每张数字牌的指示变量求和得到。轮数公式由尾和公式与“指定 kk 张牌在一轮全部缺失”的精确概率做容斥得到。两个容斥和分别化为 11 与 HnH_n,所以 E[N]=mHn+1\mathbb E[N]=mH_n+1。最后 Wald 等式把独立同分布轮次的总长度期望化为 E[N]E[X]\mathbb E[N]\mathbb E[X]。因此算法输出的闭式正是游戏总时间的期望。

    • 1

    信息

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