数学期望起步

何为数学期望

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

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

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

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

怎么理解呢?

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


有A,B两支队伍,都有n人,A中每个队伍的人的战力值为 A i A_i ,B中每个队伍的人的战力值为 B i B_i ,共有n场比赛,每场比赛中胜方为能力值较大的人,得到的分数定义为 A B A \Leftarrow\Rightarrow B ,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)

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

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

而且,我们发现,对于某种情况 A i B j A_i \Leftarrow\Rightarrow B_j ,发生的情况有 ( n 1 ) ! (n-1)! ,且共有 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}

那么 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)

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

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


题目描述

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

数据范围

n 1 0 5 n \leq 10^5

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

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

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

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

  • 对于 i n \forall i \le n ,考虑购买一次的情况,有 i n {i \over n} 的慨率得到一个新,即没有得到过的印章,剩下 n i n {n - i\over n} 的概率得到之前得到过的印章。所以得到等式
    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

    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

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

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

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

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


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

题目描述

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

数据范围

n , k , c 100 n,k,c \leq 100

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

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

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

  • i + 1 > 0 \forall i+1>0 ,有两种情况,要么就是没有选到,要么就是选到之后改为一种新的颜色,两种情况概率都为 1 2 {1\over 2} ,而第二种情况中,有 1 c {1\over c} 的概率涂成某种颜色 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 × k m o d    c )   + =   1 2 c f ( i , j ) f(i+1,j\times k\mod c)\ +=\ {1\over 2c}f(i,j)

c n t i cnt_i 表示第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

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

猜你喜欢

转载自blog.csdn.net/juruo_hejiarui/article/details/83422471