浅谈期望的线性性(可加性)【CodeForces280c】【bzoj3036】【bzoj3143】

本文通过Codeforces280c、bzoj3036和bzoj3143三道题目,浅谈期望的线性性(可加性)在解决树形结构和有向无环图(DAG)问题中的应用。通过期望的线性性,可以将复杂问题分解为求解每个节点或边的期望值,进而得到整个问题的解。文章详细解释了如何利用期望的线性性求解树的期望操作次数、有向无环图中路径长度的期望和无向连通图中最小期望总分的编号策略。
摘要由CSDN通过智能技术生成

这里写图片描述
[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=63399955
向大(hei)佬(e)势力学(di)习(tou)

之前一直都没有接触过期望,更别说期望dp了。
先从期望说起吧,dp什么的先不谈。浅谈一下期望的线性性(可加性),这是一个很重要的性质,主要用我做的这几道例题来更感性的理解(真的是浅谈。。。orz)

首先,期望是指一个事件有多种结果,每一种结果出现有一定的可能性。
对于随机变量x,它的期望E(x)=sigma{基本结果i发生的概率*发生基本结果i时的x的数值,i是一个基本结果}

然后是期望的线性性(可加性):
(感性理解一下)
E(X+Y)=E(X)+E(Y)
即两个(或多个)随机变量的和的期望等于期望的和

下面就由题目来理解理解吧(题才是重点):

Codeforces280c

题目大意
给出一棵含n个白点的有根树,每次随机选择一个还没有被染黑的节点,将这个节点和这个节点子树中的所有点染黑.
问期望操作多少次后所有点都被染黑.
N<=100000

整棵树的期望操作次数太大,难以找到方法。这时我们需要突破口。
该如何将大问题转化为小问题呢?我们发现,一棵树是可以分成好几颗子树的,而子树分解的最终状态就是所有的点。那么,我们是不是可以计算出 每个点被染黑的期望操作次数,然后相加就是整棵树的了?答案是当然可以。
这里需要注意的是,对于每个点的操作次数是指的在这个点上的操作。对于每一个点,如果其祖先被染黑了,它自己也会被顺带染黑,而这个对于该点来说是没有进行操作的。所以得出对于点x:E(x)=1/dep[x]
dfs就可以了

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

const int N=100000+5;

int n;
int head[N],end[N*2],nxt[N*2],hh=0;
double ans=0;

void dfs(int u,int f,int dep){
    ans+=1.0/dep;
    for(int i=head[u];i;i=nxt[i]){
        int v=end[i];
        if(v==f) continue;
        dfs(v,u,dep+1);
    }
}
void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值