首先考虑这张图是外向树的情况。
设 su 表示 u 子树内结点的 W 值之和。
则答案为 n∏i=1Wi∑nj=1Wj∞∑k=0(1−si∑nj=1Wj)k=n∏i=1Wisi 从而树形 DP,设 fu,i 表示 u 的子树内 W 值之和为 i,子树内的概率乘积。
然后发现不一定是外向树。
对于反向边,一个容易想到的处理方式是容斥:用不存在这条边的概率减去这条边是正向边的概率。
把容斥系数放到 DP 里即可。
复杂度 O(n2)。
代码:
1 |
|
首先考虑这张图是外向树的情况。
设 su 表示 u 子树内结点的 W 值之和。
则答案为 n∏i=1Wi∑nj=1Wj∞∑k=0(1−si∑nj=1Wj)k=n∏i=1Wisi 从而树形 DP,设 fu,i 表示 u 的子树内 W 值之和为 i,子树内的概率乘积。
然后发现不一定是外向树。
对于反向边,一个容易想到的处理方式是容斥:用不存在这条边的概率减去这条边是正向边的概率。
把容斥系数放到 DP 里即可。
复杂度 O(n2)。
代码:
1 | #include <cstdio> |
Related Issues not found
Please contact @Alpha1022 to initialize the comment