首页 > 其他 > 详细

[bzoj4318]OSU![概率dp]

时间:2015-12-31 07:08:08      阅读:311      评论:0      收藏:0      [点我收藏+]

和上一道题一模一样,但是这次是三次方,这样每次对答案的贡献中含有二次项,求期望是线性运算,不能直接平方,平方的期望不等于期望的平方。对于这个平方也要递推计算。

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 double    p[110000],g1[110000],g2[110000],f[110000];
 6 
 7 int main()
 8 {
 9     int    i,n;
10 
11     scanf("%d",&n);
12     for(i=1;i<=n;++i)scanf("%lf",&p[i]);
13     
14     for(i=1;i<=n;++i)
15     {
16         g1[i]=(g1[i-1]+1)*p[i];
17         g2[i]=(g2[i-1]+2*g1[i-1]+1)*p[i];
18         f[i]=f[i-1]+(3*g2[i-1]+3*g1[i-1]+1)*p[i];
19     }
20     printf("%.1f",f[n]);
21     return 0;
22 }

 

[bzoj4318]OSU![概率dp]

原文:http://www.cnblogs.com/Gster/p/5090528.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!