概率充电器

换根DP好题

\(f[i]\)表示只考虑\(i\)及其子树的时候,\(i\)通电的概率

\[f[i]=q_i+(1-q_i)(1- \prod_{v} (f[v](1-p_{(v,i)})+1-f[v])) \]

化简为

\[f[i]=q_i+(1-q_i)(1- \prod_{v} (1-f[v]p_{(v,i)})) \]

其中\(v\)\(i\)的儿子,\(p_{(v,i)}\)表示这条边的概率

解释一下:分两种情况,

\(i\)自己亮了,那么样本空间剩下的边和点随便是什么状态都可以

\(i\)自己没亮,那么必须要至少有一个儿子亮了且这条边一定能够通电。我们考虑这种情况的反面,对任意一个儿子\(v\),它不亮的概率是\(1-f[v]\),亮了但是边不通电的概率是\(f[v](1-p_{(v,i)})\),两者加起来即可。再将上述结果累乘就是反面的概率

我们再设\(g[i]\)表示\(i\)的父亲\(fa\)在不考虑\(i\)及其子树的情况下通电的情况,\(dfa\)表示\(fa\)的父亲

\[g[i]=q_{fa}+(1-q_{fa})(1-(1-g[fa]p_{(fa,dfa)})\prod_{v≠i}(1-f[v]p_{(fa,v)})) \]

,其中\(v\)\(fa\)的儿子

情况讨论是类似的,想一下这个公式怎么来的

注意求\(f\)\(g\)的过程中,我们是用整体的累积除以某一个概率来优化的,但是这个概率是可能为\(0\)的,一定要加以判断

然后设\(ans[i]\)表示\(i\)通电的概率,有

\[ans[i]=f[i]+(1-f[i])p_{(i,fa)}g[i] \]

,其中\(fa\)\(i\)的父亲

解释一下:最终\(i\)通电要么是由于子树的原因,要么子树没有能够供电,然后父亲来供电

然后可以看一下这篇题解

注意这篇题解,设置的状态就是没有通电,这样其实跟我们上面的推导本质是一样的,但是肯定更加简洁。所以以后遇到考虑反面的情况,不妨直接按照反面设置状态

然后还要特别注意一个点,这篇题解设\(DP_i\)\(i\)的父亲没有电传到\(i\)的概率,而不是父亲不考虑\(i\)这棵子树被通电的考虑,这两个是完全不同的

update 2024.5.4

其实最好理解的还是这种操作

将三种状态(\(x\)自身通电,\(x\)通过其子树通电,\(x\)通过其父亲通电)分开考虑

第一种不说了

第二种,设\(f[i]\)表示\(i\)通过其子树供电的概率,有$$f[i]=1-\prod_{u∈son_i}(1-l_u+l_u(1-q_u)(1-f_u))$$,其中\(q_u\)表示\(u\)自身通电的概率,\(l_u\)表示\((i,u)\)这条边的长度

第三种,设\(F[i]\)表示\(i\)通过其父亲供电的概率,有$$F[i]=l_i(q_{fa}+(1-q_{fa})(F_{fa}+(1-F_{fa})(1-\prod_{u∈son_{fa}且u≠i}(1-l_u+l_u(1-q_u)(1-f_u)))))$$

最后的\(ans\)见代码就好了

posted @ 2024-03-13 16:55  最爱丁珰  阅读(1)  评论(0编辑  收藏  举报