zoukankan      html  css  js  c++  java
  • BZOJ 4318: OSU!

    我们考虑

    $E(xi + eta) = Exi + Eeta$

    $E(xi + eta)^2 = Exi^2 + 2 cdot Exi cdot Eeta + Eeta^2$

    $E(xi + eta)^3 = Exi^3 + 3 cdot Exi cdot Eeta ^2 + 3 cdot Exi^2 cdot Eeta + 3$

    我们令

    $f[i]  表示以i为结尾并且最后一位为1的数学期望$

    $g[i] 表示 平方$

    $h[i]  表示立方$

    再考虑 对于前面$i位的结果,我们都已经知道,当再添加一位的时候$

    $如果在当前位添加0,那么期望 = 权值 cdot 概率   此时的概率为 1 - p[i]  权值就是 h[i - 1]$

    $那如果添加1,依据上述公式递推即可$

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 #define N 100010
     5 int n;
     6 double p[N], f[N], g[N], h[N];
     7 
     8 void Run()
     9 {
    10     while (scanf("%d", &n) != EOF)
    11     {
    12         for (int i = 1; i <= n; ++i) scanf("%lf", p + i);
    13         for (int i = 1; i <= n; ++i)
    14         {
    15             f[i] = p[i] * (f[i - 1] + 1);
    16             g[i] = p[i] * (g[i - 1] + 2 * f[i - 1] + 1);
    17             h[i] = p[i] * (h[i - 1] + 3 * g[i - 1] + 3 * f[i - 1] + 1) + (1 - p[i]) * h[i - 1];
    18         }
    19         printf("%.1f
    ", h[n]);
    20     }
    21 }
    22 
    23 int main()
    24 {
    25     #ifdef LOCAL
    26         freopen("Test.in", "r", stdin);
    27     #endif 
    28 
    29     Run();
    30     return 0;
    31 }
    View Code
  • 相关阅读:
    android自定义通知栏遇到的问题
    写博客号的初衷
    模型转换遇关键字
    界面传值的四种方式
    button循环添加事件
    解析数据的步骤
    数组排序 (数组是有序容器,因此集合中只有数组才能排序。)
    集合遍历
    自定义view和自定义cell
    cell自适应高度
  • 原文地址:https://www.cnblogs.com/Dup4/p/9982632.html
Copyright © 2011-2022 走看看