zoukankan      html  css  js  c++  java
  • LuoguP1654 OSU! 概率与期望

    感觉数学期望这里始终都没太学明白.
    期望在任何时候都具有线性性,即 $E(a+b)=E(a)+E(b)$,这个式子任何时候都成立.
    先考虑求 $x$,$x^2$.
    令 $x1[i]$ 表示 $i$ 为 $1$ 向前的极长 $1$ 的期望长度,$x2[i],x3[i]$ 为 $x^2,x^3$ 的期望.
    那么考虑从 $i-1$ 那里转移过来,就是 $E(j+1)=E(j)+E(1)=E(j)+1$.
    概率是 $q[i]$,所以 $x1[i]=(x1[i-1]+1) imes q[i]$.
    $E((x+1)^2)=E(x^2)+E(2x)+1=E(x^2)+2E(x)+1$.
    $x2[i]=(x2[i-1]+2x1[i-1]+1) imes q[i]$,$x3[i]$ 同理.
    那么枚举完以 $i$ 结尾且 $i$ 为 $1$ 的 $x3[i]$ 后 $i$ 对后面有贡献当且仅当后一位是 $0$.
    乘上这个概率就好了,最后把所有位置的贡献加和就是总贡献了.

    #include <cstdio>  
    #include <cstring>
    #include <algorithm>   
    #define N  100009  
    #define ll long long 
    #define setIO(s) freopen(s".in","r",stdin) 
    using namespace std;  
    double x3[N],x1[N],x2[N],ans[N];  
    int main() { 
        // setIO("input");  
        int n;      
        scanf("%d",&n);          
        double fin=0.0; 
        for(int i=1;i<=n;++i) { 
            double q;   
            scanf("%lf",&q);    
            x1[i]=(x1[i-1]+1.0)*q;  
            x2[i]=(x2[i-1]+2.0*x1[i-1]+1.0)*q;   
            x3[i]=(x3[i-1]+3.0*x2[i-1]+3.0*x1[i-1]+1.0)*q; 
            fin+=x3[i-1]*(1.0-q);  
        }
        fin+=x3[n];  
        printf("%.1f
    ",fin); 
        return 0; 
    }
    

      

  • 相关阅读:
    如何实现进程间的通信
    调试手记
    WinCE的一些忠告——UNICODE编码
    一道字符串复制的面试题目
    strcpy和strncpy区别
    关于#include头文件问题
    rs232串口通讯中,读串口与读端口的区别
    IP包过滤(转)
    小数点后截位问题
    一些函数
  • 原文地址:https://www.cnblogs.com/guangheli/p/13475252.html
Copyright © 2011-2022 走看看