1 条题解

  • 0
    @ 2025-10-22 19:05:04

    题意理解

    NN 种卡,第 ii 种卡的权值 WiW_i 以概率 pi,jp_{i,j} 取值为 j{1,2,3}j \in \{1,2,3\}

    抽卡概率与权值成正比:P(抽到卡i)=WijWjP(\text{抽到卡} i) = \frac{W_i}{\sum_j W_j}

    抽到全部 NN 种卡停止,记录第一次获得每种卡的时间 TiT_i

    N1N-1 个条件 Tui<TviT_{u_i} < T_{v_i},且这些条件构成一棵树。

    求满足所有条件的概率。


    核心难点

    1. 随机权值WiW_i 是随机的,需要枚举所有可能性
    2. 条件概率Tu<TvT_{u} < T_{v} 在随机抽卡下的概率
    3. 树形约束:所有条件构成一棵树
    4. 模运算:对 998244353998244353 取模

    关键思路:容斥原理 + 树形DP

    第一步:分析单个条件

    对于条件 Tu<TvT_u < T_v,在已知所有卡权值的情况下,这个条件成立的概率是多少?

    重要结论:在抽卡过程中,Tu<TvT_u < T_v 的概率等于 WuWu+Wv\frac{W_u}{W_u + W_v}

    直观理解:考虑第一次抽到 uuvv 的时刻,抽到 uu 的概率就是 WuWu+Wv\frac{W_u}{W_u + W_v}


    第二步:处理多个条件

    所有条件构成一棵树,我们需要所有条件同时成立的概率。

    F(S)F(S) 表示权值配置为 SS 时所有条件成立的概率,则:

    F(S)=(u,v)EWuWu+WvF(S) = \prod_{(u,v) \in E} \frac{W_u}{W_u + W_v}

    总概率为:

    Answer=SP(S)F(S)\text{Answer} = \sum_S P(S) \cdot F(S)

    其中 P(S)P(S) 是权值配置 SS 的概率。


    第三步:容斥原理

    直接计算所有条件成立很困难,考虑容斥:

    f(T)f(T) 表示至少违反边集 TT 中的条件的概率。

    由容斥原理:

    $$P(\text{所有条件成立}) = \sum_{T \subseteq E} (-1)^{|T|} f(T) $$

    如果违反边 (u,v)(u,v),意味着 Tu>TvT_u > T_v


    第四步:关键观察

    定理:如果违反的边集 TT 包含环,则 f(T)=0f(T) = 0

    因为时间关系不能形成环路。

    所以只需考虑 TT 是森林的情况。

    又因为原图是树,TT 是原图的子集,所以 TT 也是森林。


    第五步:树形DP

    dp[u][s]dp[u][s] 表示以 uu 为根的子树,uu 的连通块大小为 ss 的概率贡献。

    这里"连通块"指的是:如果违反父子边,则断开;否则连通。

    转移时考虑边 (u,v)(u,v)

    • 不违反:uuvv 连通,合并连通块
    • 违反:uuvv 不连通,vv 自成一体

    第六步:概率计算

    对于边 (u,v)(u,v)

    • 不违反的概率:WuWu+Wv\frac{W_u}{W_u + W_v}
    • 违反的概率:WvWu+Wv\frac{W_v}{W_u + W_v}

    在 DP 中,我们需要对 Wu,WvW_u, W_v 的所有可能取值进行积分。


    算法框架

    状态设计

    dp[u][k]dp[u][k]:考虑 uu 的子树,uu 所在连通块大小为 kk 的概率贡献(已经考虑了容斥系数)。

    初始化

    对于叶子 uudp[u][1]=1dp[u][1] = 1

    转移

    合并子树 vvuu

    对于 dp[u][i]dp[u][i]dp[v][j]dp[v][j]

    1. 不违反边 (u,v)(u,v)(连通):

      $$\text{贡献} = dp[u][i] \times dp[v][j] \times \frac{W_u}{W_u + W_v} \times \frac{\binom{i+j-2}{i-1}}{\binom{i+j}{i}} $$

      组合数是因为需要混合两个抽卡序列。

    2. 违反边 (u,v)(u,v)(断开):

      $$\text{贡献} = dp[u][i] \times dp[v][j] \times \frac{W_v}{W_u + W_v} \times (-1) $$

      容斥系数 1-1

    最终答案

    Answer=k=1Ndp[root][k]\text{Answer} = \sum_{k=1}^N dp[root][k]

    关键优化

    1. 生成函数:用生成函数表示连通块大小分布,用 NTT 加速卷积
    2. 预处理积分:预处理 WuWu+WvdP\int \frac{W_u}{W_u + W_v} dP 等值
    3. 树上背包:经典的 O(N2)O(N^2) 树形 DP

    复杂度分析

    • 朴素 DP:O(N3)O(N^3)
    • 用生成函数优化:O(N2logN)O(N^2 \log N)
    • 对于 N1000N \leq 1000 可接受

    总结

    这道题的核心在于:

    1. 将时间关系转化为概率公式Tu<TvT_u < T_v 的概率 = WuWu+Wv\frac{W_u}{W_u + W_v}
    2. 容斥原理:处理多个条件约束
    3. 树形DP:在树上统计各种违反情况的概率
    4. 生成函数:优化连通块大小的合并

    通过将复杂的抽卡过程转化为树形结构上的概率计算,再利用动态规划高效求解,就能得到精确的概率值。

    • 1

    信息

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