1 条题解

  • 0
    @ 2026-4-19 13:06:49

    F. 稀有硬币 详细题解

    题目核心理解

    nn 个袋子,第 ii 个袋子中有 aia_i 枚金币、bib_i 枚银币。

    • 金币价值固定为 11
    • 每枚银币价值独立随机为 0011,概率均为 12\dfrac12

    每次询问给定区间 [l,r][l,r],求区间内硬币总价值严格大于区间外总价值的概率。 答案以分数模 998244353998244353 形式输出。


    核心思路

    1. 关键性质

    设:

    • AA:区间内金币总数,AA':区间外金币总数;
    • SS:区间内银币总数,SS':区间外银币总数;
    • m=S+Sm=S+S':全场银币总数,固定不变;
    • xx:区间内有效银币数,yy:区间外有效银币数。

    合法条件为:

    A+x>A+yA+x>A'+y

    整理可得:

    (AA)+xy>0(A-A')+x-y>0

    2. 转化规则

    每枚银币等价于12\dfrac12 概率让差值减 11。 令初始差值:

    st=(AA)+Sst=(A-A')+S

    合法方案数等价于:11 的次数不超过 st1st-1

    3. 最终计算

    合法方案数为组合数前缀和:

    sum=i=0st1(mi)sum=\sum_{i=0}^{st-1}\dbinom{m}{i}

    答案为合法方案数占总方案的比例:

    ans=sum2mans=\dfrac{sum}{2^m}

    算法流程

    1. 预处理阶乘、逆元、组合数及前缀和;
    2. 预处理金币、银币的前缀和数组;
    3. 对每组询问 [l,r][l,r]
      • 求出区间金币和 AA、银币和 SS
      • 计算初始值 st=2AtotA+Sst=2A-totA+S
      • st0st\le0,答案为 00
      • st>mst>m,答案为 11
      • 否则答案为 sum[st1]×inv(2m)mod998244353sum[st-1]\times inv(2^m)\bmod 998244353

    公式与复杂度分析

    答案公式:

    $$ans=\dfrac{1}{2^m}\sum_{i=0}^{\min(st-1,\,m)}\dbinom{m}{i} $$

    复杂度

    • 预处理:O(m)O(m)
    • 单次询问:O(1)O(1)
    • 总体:O(n+q+m)O(n+q+m)

    可轻松处理 n,q3×105n,q\le 3\times10^5ai,bi106\sum a_i,\sum b_i\le 10^6 的数据范围。

    • 1

    信息

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