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; }
----olinr