hdu春季集训2025(1)-1003 矩阵树定理+行列式

题解:生成树期望方案数与拉格朗日插值

题意

给定 n 个点的无向图,图中有些边以概率 p 出现。问生成树方案数的期望。有 q 次询问,每次询问不同的 p


解法分析

生成树期望方案数

  • 无向图的生成树方案数可以用矩阵树定理求解。
  • 期望生成树数时,一棵树出现的概率是其所有边权的乘积。
  • 所有生成树的边权乘积之和,就是所求的期望。
  • 这正好等于矩阵树定理里,拉普拉斯矩阵的一个代数余子式的值。

拉普拉斯矩阵的构建

对于一条边 (u, v, w)

  • A[u][u] += w
  • A[u][v] -= w

构建好拉普拉斯矩阵后,其任意一个 n-1 阶主子式的行列式就是所有生成树的边权乘积之和。


多询问的优化

  • q 次询问,不能每次都高斯消元。
  • 注意到这个代数余子式是关于 pn-1 次多项式。
  • 可以预处理出这个多项式在 x = 0, 1, ..., n-1 时的值 y

拉格朗日插值法

对于最高次数为 n 的多项式,只要有 n+1(x, f(x)),就能唯一确定这个多项式。

插值多项式的表达式如下:

P(x) = y_0 * L_0(x) + y_1 * L_1(x) + ... + y_k * L_k(x)
其中
L_i(x) = ∏_{m=0, m≠i,m<=k} (x - x_m) / (x_i - x_m)

P(x) = ∑_{j=0,j<=k} [ y_j * ∏_{m=0, m≠j,m<=k} (x - x_m) / (x_j - x_m) ]

总结

  1. 构建拉普拉斯矩阵,用矩阵树定理求所有生成树边权乘积之和。
  2. 预处理多项式值,用高斯消元算出 p = 0, 1, ..., n-1 时的所有结果。
  3. 对于每次询问,直接用拉格朗日插值求出对应 p 下的期望生成树方案数。

以上就是本题的思路与方法。

posted @ 2025-05-19 20:38  sword1e1  阅读(17)  评论(0)    收藏  举报