hdu春季集训2025(1)-1003 矩阵树定理+行列式
题解:生成树期望方案数与拉格朗日插值
题意
给定 n 个点的无向图,图中有些边以概率 p 出现。问生成树方案数的期望。有 q 次询问,每次询问不同的 p。
解法分析
生成树期望方案数
- 无向图的生成树方案数可以用矩阵树定理求解。
- 求期望生成树数时,一棵树出现的概率是其所有边权的乘积。
- 所有生成树的边权乘积之和,就是所求的期望。
- 这正好等于矩阵树定理里,拉普拉斯矩阵的一个代数余子式的值。
拉普拉斯矩阵的构建
对于一条边 (u, v, w):
A[u][u] += wA[u][v] -= w
构建好拉普拉斯矩阵后,其任意一个 n-1 阶主子式的行列式就是所有生成树的边权乘积之和。
多询问的优化
- 有
q次询问,不能每次都高斯消元。 - 注意到这个代数余子式是关于
p的n-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) ]
总结
- 构建拉普拉斯矩阵,用矩阵树定理求所有生成树边权乘积之和。
- 预处理多项式值,用高斯消元算出
p = 0, 1, ..., n-1时的所有结果。 - 对于每次询问,直接用拉格朗日插值求出对应
p下的期望生成树方案数。
以上就是本题的思路与方法。

浙公网安备 33010602011771号