【wqy】期望,概率

DAY6概率(照着打一遍整理思路

概率

概念

  • 概率:一件事情发生的可能性
  • 期望:平均值,\(E=\sum P_iw_i\)
  • 两者的联系:概率为\(p\)的事件期望\(\frac1p\)次后发生。
  • 独立事件:对于两个独立事件\(A,B\),\(P(AB)=P(A)P(B)\) (期望的不相关可积性)
  • 对于离散变量\(X\),\((P_{(X=K)}=P_{(X\le K)}-P_{(X\leq K-1)})\)
  • 期望的线性性:\(E(x+y)=E(x)+E(y)\),无论\(x\)和\(y\)是否独立
线性性==
  (E(x+y)=E(x)+E(y)) 任意(x,y)
[E(x+y)=sum_i sum_j P(x=i,y=j)(i+j)]
[sum_i sum_j P(x=i,y=j) i]
[=sum_i i P(x=i)]
j同理
得到
[sum_iiP(x=i)+sum_jjP(x=j)]
[=sum_i sum_j P(x=i,y=j) i+sum_i sum_j P(x=i,y=j) j]
[sum_i sum_j P(x=i,y=j)(i+j)]
[=E(x+y)] 
  • 方差:随机变量的方差定义为\(V(x)=E\big((x-E(x))^2\big)\)

    \[V(x)=E\big((x-E(x))^2\big)=E(x^2-2xE(x)+E(x)^2)\]
    \[=E(x^2)-E(2xE(x))+E(E(x)^2)\] 将\(E(2xE(x))\)可转化为\(2E(x)^2\)
    ? \(=E(x^2)-E(x)^2\)

    即方差的期望等于平方的期望减去期望的平方

练习

  • 每次随机一个\([1, n]\) 中的数,求期望几次能随机出所有的数。

    根据期望的线性性,只需要考虑要想把第\(i\)个数随机出来,期望需要随机几次。
    对于第\(i+1\)个数,它被随机到的概率是\(\frac{n-i}n\),期望就是\(\frac n{n-i}\)
    \(E=\frac nn+\frac n{n-1}+...+\frac n1=O(n\ ln\ n)\)

  • 随机一个排列 求\(p_i\)是\(p_1,p_2,..,p_i\)中最大的数的概率
    所有的数是等价的,所以\(p_1\)到\(p_i\)中每一个数成为最大值的概率是相等的 概率就是\(\frac1i\)

随机游走

DAG

一张从\(S\)到\(T\)的DAG,求从\(S\)随机游走到\(T\)的期望步数

设\(f_i\)为从\(i\)走到\(T\)的期望步数 拓扑排序后DP 枚举每一个点的出边转移 \(f_u=\frac1{d_u}\sum(f_v+1)\)

有一条长度为\(n\)的链,求从一端走到另一端的期望步数 每次随机向左或者向右走,如果当前在一端那么就只能向另一端走

设\(f_i\)表示从\(i\)走到\(i+1\)的期望步数 答案为\(f_0+f_1+f_2+...+f_{n-1}\)

首先\(f_0=1\)

考虑第\(i\)个节点 若它第一步向右,则步数为\(1\),概率为\(\frac12\);

若向左,则步数为\(f_{i-1}+f_i+1\),概率为\(\frac12\)

所以\(f_i=\frac12*1+\frac12*(f_{i-1}+f_i+1)\) 化解得\(f_i=f{i-1}+2\)

\(ans=1+3+5+...+(2n-1)=n^2\)

团—完全图

\(n\)个点的完全图 求从\(S\)随机游走到\(T\)的期望步数

每个点都是等价的

设\(E\)表示从一个点走向另一个点的期望步数,则\[E=\frac1{n-1}*1+\frac {n-2}{n-1}*(E+1)=n-1\]

有\(\frac1{n-1}\)的概率成功 类比抛硬币 每次\(\frac 1{n-1}\)抛到正面 期望步数为\(n-1\)

n点菊花图游走,根到x的期望步数
\[E=\frac{1}{(n-1)}+\frac{(n-2)}{(n-1)}*(2+E)=(2n-1)\]

构造

构造一个\(200\)个节点的无向图,使得从\(1\)随机游走到\(n\)的期望步数超过\(10^6\)

100个点的完全图伸出来一条长度为100的链

设\(E_0\)表示从完全图里的一个点走向链头的期望步数,\(E_0=99\)

\(f_i\)表示在链上从\(i\)走向\(i+1\)的期望步数 \(f_0=\frac1{100}+\frac{99}{100}(99+1+f_0)\) \(f_0=9901\)

\(f_i=f_{i-1}+2\) \(ans=9901+9903+...+10099=10^6\)

一棵树 求\(S\)随机游走到\(T\)的期望步数

根据期望的线性性,只需要求出从一个点随机游走到达它的父节点的期望步数\(f_x\)和从父节点随机游走到它的期望步数\(g_ x\),\(x\)的度数是\(d_x\)

对于\(f\) 枚举点\(x\)下一步是向上走还是向下走 \(f_x=\frac1{d_x}+\sum_v\frac1{d_x}*(f_v+f_x+1)=d_x+\sum_vf_v\)

对于\(g\) \(g_x=\frac1d+\frac1d(1+g_{fa_x}+g_x)+\sum_{fa_y=fa_x}\frac1d(1+f_y+g_x))\)
? \(=d_{fa_x}+g_{fa_x}+\sum_{fa_y=fa_x}f_y=d_{fa_x}+g_{fa_x}+f_{fa_x}-d_{fa_x}-f_x\)
? \(=g_{fa_x}+f_{fa_x}-f_x\)

实战

noip2016换教室

bzoj4318 OSU!

有一个长度为\(n\)的序列,第\(i\)个位置有\(p_i\)的概率为\(1\),\(1 ? p_i\)的概率为\(0\),一个序列的分数是所有极长连续的\(1\)的长度的三次方和。求期望分数。

一次方:\(ans=\sum p_i\)
二次方:\(f_i\)表示以\(i\)为结尾的长度的期望 \(g_i\)表示以\(i\)结尾的长度的平方的期望
\(f_{i+1}=p_{i+1}(1+f_i)\),\(g_{i+1}=E((x+1)^2)=E(x^2+2x+1)=p_{i+1}(g_i+2f_i+1)\)
同理 \(h_i\)表示以\(i\)结尾的三次方的期望 \(h_{i+1}=E((x+1)^3)=E(x^3+3x^2+3x+1)=p_{i+1}(h_i+3g_i+3f_i+1)\)

\(ans=\sum h_i(1-p_{i+1})\)

int main(){
#ifndef ONLINE_JUDGE
    freopen("in.txt","r",stdin);
#endif
    rd(n);
    for(int i=1;i<=n;++i) scanf("%lf",&p[i]);
    for(int i=1;i<=n;++i)
    f[i]=p[i]*(f[i-1]+1),g[i]=p[i]*(g[i-1]+2*f[i-1]+1),h[i]=p[i]*(h[i-1]+3*g[i-1]+3*f[i-1]+1);
    for(int i=1;i<=n;++i) ans+=(1-p[i+1])*h[i];
    printf("%.1f",ans);
    return 0;
}

其实还可以化解一下h[i]=h[i-1]+p[i]*(3*g[i-1]+3*f[i-1]+1)

SCOI2008 奖励关

看到\(k\le15\)很容易想到状压

用\(f[i][st]\)表示当前第\(i\)个物品状态为\(st\)的期望分数

然鹅这亚子我们无法判断这个状态是否合法

所以我们倒着来推 最后输出\(f[1][0]\)就好拉


int main(){
#ifndef ONLINE_JUDGE
    freopen("in.txt","r",stdin);
#endif
    for(int i=1;i<=16;++i) base[i]=1<<i;
    rd(n),rd(k);
    for(int i=1,x;i<=k;++i){
        rd(a[i]);
        while(rd(x),x) pre[i]|=base[x];
    }
    for(int i=n;i;--i)
        for(int st=0;st<=base[k+1]-1;++st){
            for(int j=1;j<=k;++j)
                if((pre[j]&st)==pre[j]) f[i][st]+=Max(f[i+1][st],f[i+1][st|base[j]]+(double)a[j]);
                else f[i][st]+=f[i+1][st];
            f[i][st]/=(double)k;
        }
    printf("%.6lf",f[1][0]);
    return 0;
}

原文地址:https://www.cnblogs.com/lxyyyy/p/11636880.html

时间: 2024-10-06 15:49:07

【wqy】期望,概率的相关文章

【NOIP模拟赛】黑红树 期望概率dp

这是一道比较水的期望概率dp但是考场想歪了.......我们可以发现奇数一定是不能掉下来的,因为若奇数掉下来那么上一次偶数一定不会好好待着,那么我们考虑,一个点掉下来一定是有h/2-1个红(黑),h/2+1个黑(红),而且一定是差不多相间的(我就是因为没有看出来这里才会去想组合数,然后......),那么我们发现只要一奇一偶,就可以组成一对,因为偶数一定是平的因此,我们发现在掉下来的那对之前都是红黑或黑红,但是到了这里就是红红或黑黑了,我们只要求出(异色的概率)^(h/2-1)*(同色的概率)就

HDU 3853 期望概率DP

期望概率DP简单题 从[1,1]点走到[r,c]点,每走一步的代价为2 给出每个点走相邻位置的概率,共3中方向,不动: [x,y]->[x][y]=p[x][y][0] ,  右移:[x][y]->[x][y+1]=p[x][y][1];  左移:[x][y]->[x+1][y]=p[x][y][2]; 问最后走到[r,c]的期望 dp[i][j]为从[i][j]点走到[r][c]的期望 有方程: dp[i][j]=    (dp[i][j]+2)*p[i][j][0]  +   (dp

POJ3682King Arthur&#39;s Birthday Celebration(数学期望||概率DP)

King Arthur is an narcissist who intends to spare no coins to celebrate his coming K-th birthday. The luxurious celebration will start on his birthday and King Arthur decides to let fate tell when to stop it. Every day he will toss a coin which has p

【BZOJ 3652】大新闻 数位dp+期望概率dp

并不难,只是和期望概率dp结合了一下.稍作推断就可以发现加密与不加密是两个互相独立的问题,这个时候我们分开算就好了.对于加密,我们按位统计和就好了;对于不加密,我们先假设所有数都找到了他能找到的最好的匹配(就是异或后为二进制最高位与n-1相等的最大数)并且算出其异或后的总和,然后我们按位贪心,带着所有的数(一开始我们假设所有的数是小于等于二进制最高位与n-1相等的最大数的所有数)从高位走向低位,每走一步,如果这一位是0,就会导致一半的数在这一位不能是1,减去这一半的数在这一位上的贡献,如果这一位

【复习】高斯消元解图上期望概率

复习了一下高斯消元解图上期望概率,笔记的话,就直接去看SengXian的blog吧.BZOJ 1444 - [Jsoi2009]有趣的游戏见https://blog.sengxian.com/solutions/bzoj-1444 #include <cstdio> #include <cstring> #include <algorithm> const int N=11; char s[N*2]; int n,m,l,cnt,trans[N*N][N],id[N*N

LightOJ 1030 Discovering Gold(期望 概率)

正推,到达i的概率为p[i],要注意除了1和n外,到达i的概率并不一定为1 概率表达式为p[i] += p[j] / min(n - j, 6) 从j带过来的期望为exp[i] += exp[j] / min(n - j, 6) 又到达i时有价值val[i],到达i的概率为p[i],故exp[i] += val[i] * p[i] #include<cstdio> #include<iostream> #include<cstdlib> #include<cstr

【BZOJ 2553】[BeiJing2011]禁忌 AC自动机+期望概率dp

我一开始想的是倒着来,发现太屎,后来想到了一种神奇的方法——我们带着一个既有期望又有概率的矩阵,偶数(2*id)代表期望,奇数(2*id+1)代表概率,初始答案矩阵一列,1的位置为1(起点为0),工具矩阵上如果是直接转移那么就是由i到j概率期望都乘上1/alphabet,特别的,对于一个包含禁忌串的节点直接由其父节点指向0,而且在计算期望是多加上他的概率,最后统计答案时把答案矩阵上所有的期望加和即可,这个方法很完美的被卡精了....... #include <cstdio> #include

Bzoj 3450: Tyvj1952 Easy 期望/概率,动态规划

3450: Tyvj1952 Easy Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 431  Solved: 325[Submit][Status][Discuss] Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下这个游戏的规则有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连续a个comb就有a*a分,comb就是极大的连续o.比如ooxxxxooooxxx

HDU3994(Folyd + 期望概率)

Mission Impossible Time Limit: 30000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 227    Accepted Submission(s): 106Special Judge Problem Description I.M.F.(Impossible Missions Force) is a top secret spy org

【BZOJ 4832】 [Lydsy2017年4月月赛] 抵制克苏恩 期望概率dp

打记录的题打多了,忘了用开维记录信息了......我们用f[i][j][l][k]表示已经完成了i次攻击,随从3血剩j个,2血剩l个,1血剩k个,这样我们求出每个状态的概率,从而求出他们对答案的贡献并加和,一开始我用的期望忘了转移的时候不能用1而要用概率...... #include <cstdio> #include <cstring> #define r register using namespace std; typedef long double LD; inline i