题目链接:
PE 323
题意:
给你一系列32bits的无符号数。
x初始为0,然后和这一系列数进行或操作,操作了N次,直到x是232−1,其实就是x的32个bits都是1。
求N的数学期望。
题解:概率dp。
假设dp[i]表示有i个bits时的数学期望。
那么怎么去找这些递推关系,或者说转移方程呢?
详细说明一下。
对于i=1时,显然,我们有12的几率可以通过一个操作得到1个bits。那么还有12的几率我们还要基于前面的已经是1个bits时的,即12∗(1+dp[1])。所以dp[1]=12+12∗(1+dp[1])=1+dp[1]2,所以dp[1]=2。
同理,对于i=2,我们可以得到,dp[2]=14+24∗(1+dp[1])+14∗(1+dp[2])=14+3∗24+14+dp[2]4,所以,dp[2]=83=2.666666667...。
对于有N个bits的,如果第一次就把其中K个bits变成1的概率就为:C(N,K)2N.
所以:
dp[N]=12N+C(N,1)2N∗(1+dp[1])+C(N,2)2N∗(1+dp[2])+...+C(N,N−1)2N∗(1+dp[n−1])+12N∗(1+dp[n])。
然后可以写代码解决了。