1 条题解

  • 0
    @ 2026-9-3 10:56:33

    思路

    把第 ii 个人需要收到的 cic_i 票看成 cic_i 个带标签的目标槽位。先计算选民与这些槽位之间的完美匹配数,最后除以每个人的 ci!c_i!,就得到不区分同一收票人的槽位后的投票方式数。

    对一个团队,设该团队有 AA 位选民,其成员对应的目标槽位总数为 BB。该团队内部的所有边都是禁止边,构成一个 A×BA\times B 的完整二分图。

    做法

    使用容斥原理。对某个团队,恰好选择 kk 条互不冲突的禁止边有

    (Ak)(Bk)k!\binom Ak\binom Bk k!

    种方式,这些系数构成该团队的车多项式。不同团队的禁止边集合互不相交,因此把所有团队的车多项式相乘,得到系数 rkr_k:从全部禁止边中选择 kk 条互不冲突边的方案数。

    固定这 kk 条错误匹配后,剩下的 n−kn-k 位选民和槽位可以任意匹配,共有 (n−k)!(n-k)! 种。于是合法的带标签匹配数为

    ∑k=0n(−1)krk(n−k)!.\sum_{k=0}^{n}(-1)^k r_k(n-k)!.

    最后乘上 ∏i(ci!)−1\prod_i(c_i!)^{-1},消除同一收票人的槽位标签。

    小规模子任务可以直接枚举每位选民的收票人;中等规模子任务把槽位显式展开,用子集动态规划计算带标签匹配数,再除以阶乘。

    正确性证明

    每种原投票方式在给每个人的 cic_i 张入票任意编号后,对应恰好 ∏ici!\prod_i c_i! 个带标签完美匹配,所以最终除以该乘积是正确的。

    团队内部边恰好覆盖全部非法投票。车多项式系数精确统计了能够同时发生的 kk 条非法边;对固定的这些边,剩余位置有 (n−k)!(n-k)! 种匹配。容斥求和因此恰好删除所有至少包含一条非法边的匹配,只保留完全合法的匹配。团队之间没有共享的非法边块,多项式乘法恰好完成互不冲突边数的合并计数。

    复杂度

    所有团队多项式朴素卷积的总复杂度为 O(n2)O(n^2),空间复杂度为 O(n)O(n)。

    • 1

    信息

    ID
    1365
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者