概率 && 期望 DP 入门

~待填坑~

先来了解一点儿概率和期望的基本知识:

样本空间.事件和概率

样本空间:样本空间 $S$ 是一个集合,它的元素成为基本事件。样本空间的一个子集被称为事件,根据定义,所有基本事件互斥。

概率:如果有一种事件到实数的映射满足 $P()$,满足:

1.对任何事件,$P(A)>=0$

2.$P(S)=1$

3.对两个互斥事件,$P(A\cap B)=P(A)+P(B)$

则可称$P(A)$为事件$A$的概率。上述三条成为概率公理。

事件的关系与运算

包含:对于事件$A$与事件$B$,如果事件$A$发生,则事件$B$一定发生,称事件$B$包含事件$A$(或事件$A$包含于事件$B$)。

事件$A$与事件$B$的并事件(和事件):某事件发生当且仅当事件$A$发生或事件$B$发生,记作$A\cap B$

事件$A$与事件$B$的交事件(积事件):某事件发生当且仅当事件$A$发生且事件$B$发生,记作$A\cup B$

事件$A$与事件$B$互斥:$A\cup B$为不可能事件,即$A$事件与$B$事件在任意一次实验中并不会同时发生。

条件概率:

定义B的关于A的条件概率(事件A发生条件下,事件B发生的概率)

$P(B|A)={P(A\cup B)\over P(A)}$

独立:

如果A,B满足$P(A∩B)=P(A)P(B)$,称A,B独立,可以推出$P(A)=P(A|B)$

随机变量是随机实验结果变化而变化的变量。有离散型和连续型两种,以离散型为例。

数学期望(或均值),即随机变量在概率意义下的平均值:

$E(X)=\sum _1^n X_ip_i$

我们可以把数学期望理解成加权平均值一样的东西,就是对于每种情况将它们的权值和这种情况的概率乘积之和。

期望的线性性:对于任意随机变量$X$,$Y$满足

$E[ax+by]=aE[x]+bE[y]$

期望的线性性始终成立,无论两随机变量是否成立。

是不是W_W?

$Fighting$(实战)

CF280C Game on Tree

题目大意:

给出一颗含n个白点的有根树,每次随机选一个还没有被染黑的节点,将这颗节点和这个节点子树中的所有点染黑。问期望操作多少次后所有点都被染黑。$n<=100000$

根据期望的线性性,计算出每个点被选择的期望次数,然后相加就是整棵树了。

所以对于点x:

$E(x)=1/dep[x]$

对于每一个点,将他黑掉的方式有$dep[i]$种,因为每个点有且只有一次被删掉,所以相当于每个点的权值为1,那么黑掉这个点的概率即为$E(x)=1/dep[x]$

期望的线性性:对于任意随机变量$X$,$Y$满足

$E[ax+by]=aE[x]+bE[y]$

这个性质也就决定了我们在解这个问题时可以将把所有点染黑的期望转化为染黑每个点的期望次数之和。

#include<iostream>
#include<cstdio>

#define N 1000000
using namespace std;

int n,phead[N],tot,dep[N];
struct node {
    int to,next;
} e[N];
void add(int u,int v) {
    e[++tot].to=v,e[tot].next=phead[u],phead[u]=tot;
}
double ans;
void dfs(int u) {
    for(int i=phead[u]; i; i=e[i].next) {
        int v=e[i].to;
        dep[v]=dep[u]+1;
        dfs(v);
    }
}
int main() {
    scanf("%d",&n);
    for(int u,v,i=1; i<n; i++) {
        scanf("%d%d",&u,&v);
        add(u,v);
    }
    dep[1]=1;
    dfs(1);
    ans=0;
    for(int i=1; i<=n; i++) ans+=1.0/dep[i];
    printf("%.7lf",ans);
    return 0;
}

P4316 绿豆蛙的归宿

给出一个有向无环图,起点为1终点为N,每条边都有一个长度,并且从起点出发能够到达所有的点,所有的点也都能够到达终点。绿豆蛙从起点出发,走向终点。 到达每一个顶点时,如果有K条离开该点的道路,绿豆蛙可以选择任意一条道路离开该点,并且走向每条路的概率为 $1\over K$ 。 现在绿豆蛙想知道,从起点走到终点的所经过的路径总长度期望是多少?

对于100%的数据 $N<=100000,M<=2*N$

对于有向无环图,脑海中会出现一张图,YY一下,到达每个点的概率就是$\sum{ 1\over 前一个点的出度}$

由期望的线性性可得:经过路径期望总长度=$\sum$ 每条边期望经过的次数*边权

因为是有向无环图,每条边期望经过的次数=该起点的期望经过次数*从该起点出发经过该路径的概率

于是问题就转化成了求每个点期望经过次数。很显然,每个点的期望经过次数=$\sum $入边的期望经过次数

于是发现与点的期望值是相辅相成的关系,由于是有向无环图,所以拓扑排序即可。

借鉴博客: 1 2 3 4

原文地址:https://www.cnblogs.com/song-/p/9602440.html

时间: 2024-07-31 01:44:57

概率 && 期望 DP 入门的相关文章

【BZOJ-1419】Red is good 概率期望DP

1419: Red is good Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 660  Solved: 257[Submit][Status][Discuss] Description 桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元.可以随时停止翻牌,在最优策略下平均能得到多少钱. Input 一行输入两个数R,B,其值在0到5000之间 Output 在最优策略下平均能得到多少钱

CF148D--Bag of mice+概率期望dp

第一道概率期望dp:) 其实和一般的dp也差不多,只要状态选好就行了. 定义dp[i][j]表示还剩i只白老鼠j只黑老鼠时候公主赢得概率. 则:1.公主选白老鼠,直接赢,概率:i/(i+j) 2.公主选黑老鼠 1)龙选黑老鼠,逃走黑老鼠:概率:j/(i+j)*(j-1)/(i+j-1)*(j-2)/(i+j-2) 2)  龙选黑老鼠,逃走白老鼠:概率:j/(i+j)*(j-1)/(i+j-1)*i/(i+j-2) 3) 龙选白老鼠,这样公主是必输的,不用考虑 然后dp[i][j]等于以上概率之和

Codeforces - 1264C - Beautiful Mirrors with queries - 概率期望dp

一道挺难的概率期望dp,花了很长时间才学会div2的E怎么做,但这道题是另一种设法. https://codeforces.com/contest/1264/problem/C 要设为 \(dp_i\) 表示第 \(i\) 个格子期望经过多少次,所以 \(dp_{n+1}=1\). https://www.cnblogs.com/suncongbo/p/11996219.html 原文地址:https://www.cnblogs.com/KisekiPurin2019/p/12063633.ht

hdu4405--Aeroplane chess+概率期望dp

首先推荐一篇很好的如何概率期望问题的入门文章:点击打开链接 昨天比赛的时候面对这道题的第一想法是依照数学期望的定义来做,即依次求出某个点扔i次骰子能到达n点的概率,然后由期望的定义就可以求出答案了.但显然这在程序上是不可能实现的. 今天看了那篇文章后才知道自己的想法是大错特错的;求解这种问题应该采用一种递推的思路,即每次只考虑一次转移后当前状态的期望,然后我们依次考虑每个节点就可以得到一个方程组,然后就只需要求解这个方程组就行了. 当然对于如何求解这个方程组,我们可以采用高斯消元法,当然如果这个

Codeforces 908 D.New Year and Arbitrary Arrangement (概率&amp;期望DP)

题目链接:New Year and Arbitrary Arrangement 题意: 有一个ab字符串,初始为空. 用Pa/(Pa+Pb)的概率在末尾添加字母a,有 Pb/(Pa+Pb)的概率在末尾添加字母b,当出现≥k个ab子串时立即停止添加字母,求最后期望的ab子串个数.(子串ab不要求连续) 例子:当k=1,aab含2个ab,bbabbab时不可能出现的,因为到了bbab就会停止添加字母. 题解: 期望DP DP果然是智商的分界线 orz @.@#,这题题意其实我也没看太懂,后来看了别人

LightOJ 1030 Discovering Gold (概率/期望DP)

题目链接:LightOJ - 1030 Description You are in a cave, a long cave! The cave can be represented by a \(1 \times N\) grid. Each cell of the cave can contain any amount of gold. Initially you are in position \(1\). Now each turn you throw a perfect \(6\) s

【POJ 2096】Collecting Bugs 概率期望dp

题意 有s个系统,n种bug,小明每天找出一个bug,可能是任意一个系统的,可能是任意一种bug,即是某一系统的bug概率是1/s,是某一种bug概率是1/n. 求他找到s个系统的bug,n种bug,需要的天数的期望. 分析 计算期望E=∑所有可能需要的天数*概率 找到s个系统n种bug,需要最少max(s,n)天,而可能的天数是无穷的,这样计算很复杂,复杂到算不了. 所以考虑dp,期望E=∑(昨天可以转移到现在状态的所有可能的情况的期望+1)*概率=∑(昨天可以转移到现在状态的所有可能的情况的

【xsy1528】azelso - 概率期望dp

北京集训的题都是好题啊~~(于是我爆0了) 注意到一个重要的性质就是期望是线性的,也就是说每一段的期望步数可以直接加起来,那么dp求出每一段的期望就行了... 设$f_i$表示从$i$出发不回到$i$直接到达终点的概率,显然期望步数就是$\frac{1}{f_i}$: 考虑转移,设下一个事件概率为$p$,则 如果下一个事件是敌人:$f_i=f_{i+1}*p$ 如果下一个事件是旗子:$f_i=(1-p)*(1-f_{i+1})*(1+p*(1-f_{i+1})+p^2*(1-f_{i+1})^2

华南理工大学“三七互娱杯”程序设计竞赛 HRY and codefire(概率期望DP)

https://ac.nowcoder.com/acm/contest/874/A 题目:有两个账号 , 一开始都为0级 , 求任意一个账号升级到N的期望 要求:如果当前账号嬴了 , 就继续沿用当前的账号,否则就更换其他账号,第i级嬴的概率是pi; 官方题解 因为dp[i][j] 涉及到 dp[j][i] 的价值 ,如果单纯的只是用一条式子是无法得出dp[i][j]的价值 , 应为这是从后开始计算的 , dp[j][i]还没有被计算到 ,所以必须需要两条方程 , 单纯的两条也是不行 , 因为dp