题目链接

  核💗:  这道题求二项分布E(x^k)的期望, 刚才是照着E(X^2)展开化简得到np(1-p)的形式化简,但是失败了

                 后来发现这道题可以用数学期望的独立性来做,动态规划-233

                 先说一下期望的性质与证明:

      

    用概率密度函数证明貌似很好证明:

     

               我们可以把二项分布实验看作是n次伯努利实验, x=x1+x2+...+xn

               那么x^k=(x1+..xn)*(x1+..xn)*...*(x1+..xn)

                x^k中所有元素可以根据所含xi种类数分为k类, 同一类具有相同的数学期望. 比如k=3,n=3时, x1x2x2与x1x1x2具有相同数学期望p^2

               我们设立这样的状态dp[i][j]->表示x^i次方展开项有j类xi, 那么dp[i][j]=dp[i-1][j]*j+dp[i-1][j-1]*(n-j+1)

              E(X^k)=dp[k][1]*p+dp[k][2]*p^2+...dp[k][k]*p^k

              好啦,问题解决了....ps(mt,好想你)

    

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long LL;
 4 const int N=1007;
 5 const LL mod=1e9+7;
 6 const LL x=570000004;// 100关于mod的逆元
 7 LL dp[N][N];
 8 LL n,p,k;
 9 int main ()
10 {
11     while (~scanf("%lld %lld %lld",&n,&k,&p)) {
12         p=p*x%mod;
13         memset (dp,0,sizeof(dp));
14         dp[1][1]=n;
15         for (int i=2;i<=k;i++)  
16             for (int j=1;j<=i;j++) 
17                 dp[i][j]=( dp[i-1][j]*j+dp[i-1][j-1]*(n-j+1)%mod )%mod;
18         LL sum=0; LL t=p;
19         for (int i=1;i<=k;i++) {
20             sum=(sum+t*dp[k][i])%mod;
21             t=t*p%mod;
22         }
23         printf("%lld\n",sum);
24     }   
25     return 0;
26 }