数学期望起步

何为数学期望

E ( x ) E(x) E(x)表示某个东东的数学期望,该东东共有n种情况,每种情况的值为 v i v_i vi,出现的概率为 p i p_i pi,则 E ( x ) = ∑ i = 1 n p i v i E(x)=\sum_{i=1}^n p_iv_i E(x)=i=1npivi

这样,对于等概率的问题,我们就有一种暴力的思路,枚举每一种情况,算出其值,记录方案总数,然后将值的总和除以方案数便可以得到期望值了。

但有一个很重要的问题:会超时

于是我们要引入这样一句话:和的期望=期望的和

怎么理解呢?

我们来考虑一个问题(这是我在某场模拟赛里面看到的,略有改动)


有A,B两支队伍,都有n人,A中每个队伍的人的战力值为 A i A_i Ai,B中每个队伍的人的战力值为 B i B_i Bi,共有n场比赛,每场比赛中胜方为能力值较大的人,得到的分数定义为 A ⇐ ⇒ B A \Leftarrow\Rightarrow B AB,A表示A队参加的人,B表示B队参加的人。

每个人只能参加一场比赛,每个人的对手都是随机而等概率的,例如A队有A1和A2两个人,B队有B1和B2两个人,那么(A1 vs B1,A2 vs B2)和(A1 vs B2,A2 vs B1)的概率都是均等的50%。

求A队得分减去B对得分的期望值。
( n ≤ 1000 , A i , B i ≤ 40000 ) (n\le 1000, A_i, B_i \le 40000) (n1000,Ai,Bi40000)

emm,依照上面的思路,我们可以枚举每一种组合方式,然后计算,时间复杂度为 O ( n ! ) O(n!) O(n!),明显超时。

首先, E A − B E_{A-B} EAB其实是等于 E A − E B E_A-E_B EAEB, E A E_A EA表示A队得到的分数,这里体现了粗体字的那句话。

而且,我们发现,对于某种情况 A i ⇐ ⇒ B j A_i \Leftarrow\Rightarrow B_j AiBj,发生的情况有 ( n − 1 ) ! (n-1)! (n1)!,且共有 n ! n! n!种情况,所以其贡献为 A i ⇐ ⇒ B j × ( n − 1 ) ! n ! ⇒ A i ⇐ ⇒ B j n {A_i \Leftarrow\Rightarrow B_j \times (n-1)!\over n!}\Rightarrow {A_i \Leftarrow\Rightarrow B_j\over n} n!AiBj×(n1)!nAiBj

那么 E A = ∑ i = 1 n ∑ j = 1 n A i ⇐ ⇒ B j n ( A i > B j ) E_A=\sum_{i=1}^n \sum_{j=1}^n {A_i \Leftarrow\Rightarrow B_j\over n} (A_i > B_j) EA=i=1nj=1nnAiBj(Ai>Bj)

E B E_B EB也是同理。
这里也是粗体话一种体现。

其实这道题的 A i ⇐ ⇒ B j A_i \Leftarrow\Rightarrow B_j AiBj,是 ( A i − B j ) 2 (A_i-B_j)^2 (AiBj)2,然后 n &lt; = 5 × 1 0 5 n&lt;=5\times 10^5 n<=5×105,有兴趣的dalao可以想一下。


题目描述

再来想一个问题,一个商店开展一个促销活动,要你集齐n种印章,每次购买商品有几率获得n种中的一种,每种获得的概率都相同,有可能会重复获得一种印章,问集齐n中印章所需要的购买次数的数学期望值。

数据范围

n ≤ 1 0 5 n \leq 10^5 n105

这道题讨厌在——不能水分,因为你不能枚举每一次的可能,然后统计(有可能要无限次)

所以我们可以用动态规划解决。

f ( i ) f(i) f(i)表示还剩下i中印章需要集齐,所需要的次数的数学期望。

  • f ( n ) = 0 f(n)=0 f(n)=0,原因不解释

  • 对于 ∀ i ≤ n \forall i \le n in,考虑购买一次的情况,有 i n {i \over n} ni的慨率得到一个新,即没有得到过的印章,剩下 n − i n {n - i\over n} nni的概率得到之前得到过的印章。所以得到等式
    f ( i ) = i n f ( i + 1 ) + n − i n f ( i ) + 1 f(i)={i\over n}f(i+1)+{n-i\over n}f(i)+1 f(i)=nif(i+1)+nnif(i)+1

    ⇒ n × f ( i ) = i × f ( i + 1 ) + ( n − i ) × f ( i ) + n \Rightarrow n\times f(i)=i\times f(i+1)+(n-i)\times f(i)+n n×f(i)=i×f(i+1)+(ni)×f(i)+n

    ⇒ i × f ( i ) = i × f ( i + 1 ) + n \Rightarrow i\times f(i)=i\times f(i+1)+n i×f(i)=i×f(i+1)+n

    ⇒ f ( i ) = f ( i + 1 ) + n i \Rightarrow f(i)=f(i+1)+{n\over i} f(i)=f(i+1)+in

这样就能够解决这个问题了,当然,化简之后就能得到一条n个分数和的式子,之后说不定有更快的方法,但本人太菜,想不到了。

当某些数学期望的问题难以进行枚举情况并计算的,我们可以考虑dp


说到动态规划,来想一个更难的问题:

题目描述

c c c种颜色, n n n个位置,每个位置的初始颜色为1,有 k k k次操作,每次操作选择一个区间 [ l , r ] [l, r] [l,r]中的某些位置,可以不选,为之涂上随机的颜色,若颜色为 a a a的位置涂上了颜色 b b b,则变为 a b m o d &ThinSpace;&ThinSpace; c ab\mod c abmodc,求k次涂色后,所有位置的颜色编号之和的期望值

数据范围

n , k , c ≤ 100 n,k,c \leq 100 n,k,c100

依然按dp方向想,很容易想到是 f ( i , j , k ) f(i, j, k) f(i,j,k)表示第 i i i个位置第 j j j次染色,染为 k k k颜色的概率。此方法时间复杂度太高,不能接受。

但是,我们发现:任意两个位置,涂相同的次数,最后转为相同的颜色,其概率是相同的,所以第一维的状态并不需要,所以状态改为 f ( i , j ) f(i,j) f(i,j)表示操作i次,最后颜色变为j的概率。

  • f ( 0 , 1 ) = 1 f(0,1)=1 f(0,1)=1,这是毫无疑问的

  • ∀ i + 1 &gt; 0 \forall i+1&gt;0 i+1>0,有两种情况,要么就是没有选到,要么就是选到之后改为一种新的颜色,两种情况概率都为 1 2 {1\over 2} 21,而第二种情况中,有 1 c {1\over c} c1的概率涂成某种颜色 k k k,于是得到式子(不能讲状态转移方程):

    • f ( i + 1 , j )   + =   1 2 f ( i , j ) f(i+1,j) \ += \ {1\over 2}f(i,j) f(i+1,j) += 21f(i,j)
    • f ( i + 1 , j × k m o d &ThinSpace;&ThinSpace; c )   + =   1 2 c f ( i , j ) f(i+1,j\times k\mod c)\ +=\ {1\over 2c}f(i,j) f(i+1,j×kmodc) += 2c1f(i,j)

c n t i cnt_i cnti表示第i个位置可能被操作的最多次数,则最后的答案便是:

∑ i = 1 n ∑ j = 1 c f ( c n t i , j ) × j \sum_{i=1}^n \sum_{j=1}^c f(cnt_i, j)\times j i=1nj=1cf(cnti,j)×j

本人数学不好,若有讲得不对的,欢迎各位dalao指正

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值