一道不算太难的概率树形 DP?
此处每个结点贡献都是 1,所以相当于算概率。
设 ai=qi,valu,v 表示 u,v 连边的通电概率,soni 表示 i 的儿子的集合。
再设 fi 表示 i 不被子树内的结点供电的概率,gi 表示 i 不被祖先供电的概率。
首先有转移 fp=(1−ap)∏v∈sonp(fv+(1−fv)(1−valp,v))
考虑到 p 本身也属于自己的子树,所以先保证 p 自己不供电。
然后 ∀v∈sonp,要么自己也不从子树供电,要么自己从子树供电但是边不导电。
易得上式。
接着有 P=fp⋅gpfv+(1−fv)(1−valp,v)gv=P+(1−P)(1−valp,v)(v∈sonp)
同样有两种情况,父节点不供电或者父节点供电但是不导电。
那么我们考虑算出 P 即父节点不供电的概率。
显然它不能从子树中供电也不能从父节点的祖先供电,即 fp⋅gp。
而且 v 的贡献要删去。
同时注意根节点的 g 值为 1。
统计答案时,即 n∑i=1(1−fi⋅gi)。
因为从祖先或是从子树两者都满足它才没电。
代码:
1 |
|