1 条题解

  • 0
    @ 2026-9-3 10:50:06

    装球的袋子题解

    思路

    记奇数编号球的数量为 o=⌈m/2⌉o=\lceil m/2\rceil,偶数编号球数量为 e=⌊m/2⌋e=\lfloor m/2\rfloor。恰有 ff 个袋子取到奇数球的方案数为

    (nf)ofen−f.\binom nf o^f e^{n-f}.

    因此中规模可以直接枚举 f=0,1,…,nf=0,1,\ldots,n,累加 fkf^k 乘以上式,复杂度为 O(n)O(n)。

    小规模则可以枚举每个袋子选择的具体编号,直接统计 FF。

    为了摆脱对巨大 nn 的枚举,使用第二类斯特林数恒等式

    Fk=∑i=0kS(k,i)Fi‾,F^k=\sum_{i=0}^k S(k,i)F^{\underline i},

    其中 Fi‾=F(F−1)⋯(F−i+1)F^{\underline i}=F(F-1)\cdots(F-i+1)。

    做法

    对固定的 ii,Fi‾F^{\underline i} 等价于从取到奇数球的袋子中有序选择 ii 个。先选这 ii 个互异袋子,有 ni‾n^{\underline i} 种;这些袋子各有 oo 种奇数球选择,其余袋子各有 mm 种选择。因此

    $$\sum F^{\underline i}=n^{\underline i}o^i m^{n-i}.$$

    最终答案为

    ∑i=1kS(k,i)ni‾oimn−i.\sum_{i=1}^k S(k,i)n^{\underline i}o^i m^{n-i}.

    预处理所有 S(k,i)S(k,i):

    S(k,i)=S(k−1,i−1)+iS(k−1,i).S(k,i)=S(k-1,i-1)+iS(k-1,i).

    每个测试用例从 i=1i=1 到 kk 递推下降幂、oio^i 与 mn−im^{n-i}。由于 1≤m<9982443531\le m<998244353,可用 mm 的模逆逐步更新最后一项。

    复杂度

    一次性预处理复杂度为 O(K2)O(K^2)、空间复杂度为 O(K2)O(K^2),其中 K=2000K=2000。每个测试用例时间复杂度为 O(k+log⁡n)O(k+\log n)。

    • 1

    信息

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