1 条题解

  • 0
    @ 2026-9-3 11:09:57

    题解

    思路

    “抽 11 张”卡在被抽到后立刻打出,不改变还能继续抽牌的数量,因此 bb 不影响答案。只考虑其余牌:把“抽 22 张”卡记为 +1+1,把“抽 00 张”卡和特殊卡记为 −1-1。初始余额为 55;每看到一张牌就按其类型改变余额,余额首次变为 00 时停止。获胜等价于停止前已经见到全部五张特殊卡。

    设停止时已经见到 kk 张“抽 22 张”卡。为了同时见到全部特殊卡,停止前也恰好见到 kk 张“抽 00 张”卡。去掉最后一个 −1-1 后,把初始余额从 55 平移为四个预先放置的 +1+1,问题变成一条不越过边界的格路。

    由反射原理,这部分合法符号序列数可以化简为

    (2k+4k)(k+44).\binom{2k+4}{k}\binom{k+4}{4}.

    停止后的剩余普通牌可以任意排列,排列数为

    (a+c−2ka−k).\binom{a+c-2k}{a-k}.

    因此对 0≤k≤min⁡(a,c)0\le k\le\min(a,c) 求和即可。

    当 c>ac>a 时,还存在余额始终为正、直到整副牌抽完的获胜序列。再次使用反射原理,其数量为

    $$\left(\binom{a+c+5}{c}-\binom{a+c+5}{c+5}\right)\binom{a+5}{5}.$$

    全部非中性牌的类型序列数为

    (a+c+5)!a!c!5!.\frac{(a+c+5)!}{a!c!5!}.

    用合法序列数除以总序列数即为答案。

    做法

    预处理阶乘、逆阶乘和组合数。每组数据枚举 k=0,1,…,min⁡(a,c)k=0,1,\ldots,\min(a,c),累加上述停止型序列;若 c>ac>a,再加上抽完整副牌的序列,最后乘总序列数的逆元。

    第一类子任务可以枚举全部非中性牌类型排列。第二类子任务可在状态 (i,j,s)(i,j,s) 上做概率 DP,分别表示已抽取的两种普通牌和特殊卡数量。

    复杂度

    预处理为 O(4×105)O(4\times10^5)。每组数据耗时 O(min⁡(a,c))O(\min(a,c)),总空间为 O(4×105)O(4\times10^5)。

    • 1

    信息

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