BZOJ4318:OSU!

题意:一共有n次操作,每次操作只有成功与失败之分,

成功对应1,失败对应0,n次操作对应为1个长度为n的01串。

在这个串中连续的 X个1可以贡献x^3 的分数 现在给出n,

以及每次操作的成功率,请你输出期望分数,输出四舍五入后保留1位小数。

 

 

 

期望的立方不等于立方的期望

 

设f[i]表示期望得分(三次的期望)

设g[i]表示二次的期望

设h[i]表示1的长度期望(一次的期望)

根据  $x^3=(x-1)^3+3*(x-1)^2+3*(x-1)+1$

    $x^2=(x-1)^2+2*(x-1)+1$

    $x=x-1+1$

得到f,g,h的递推公式(别忘了乘概率)

 

#include<cstdio>
#include<iostream>
using namespace std;
#define dou 0
#define DB double
#define mod 100500
int n;
DB f[mod];
DB g[mod];
DB a[mod];
DB h[mod];
signed main()
{   
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%lf",&a[i]);
        h[i]=(h[i-1]+1)*a[i];
        g[i]=(g[i-1]+2.0*h[i-1]+1)*a[i];
        f[i]=f[i-1]+(3.0*g[i-1]+3.0*h[i-1]+1)*a[i];
    }
    printf("%.1lf",f[n]);
    return 0;
}

 

posted @ 2018-08-04 07:44  olinr  阅读(120)  评论(0编辑  收藏  举报