zoukankan      html  css  js  c++  java
  • [P1654] OSU!

    [P1654] OSU! - 期望

    Description

    一共有 (n) 次操作,每次操作只有成功与失败之分,成功对应 1,失败对应 0,n 次操作对应为 1 个长度为 n 的 01 串。在这个串中连续的 (X)(1) 可以贡献 (X^3) 的分数,这 x 个 1 不能被其他连续的 1 所包含(也就是极长的一串 1,具体见样例解释)。现在给出 n,以及每个操作的成功率,请你输出期望分数。

    Solution

    连击次数从 x 变成 x+1,答案增加 3xx+3x+1

    根据期望的线性性质,我们只需要维护到每个位置的 x 和 xx 的期望即可

    对于 x,第 i 次有 p 的概率成功,那么成功的时候,x'=x+1,失败的时候,x'=0

    对于 xx,Exx'=p(Exx+2Ex+1)

    对于答案,第 i 次提供的增量为 (3Exx+3Ex+1)p

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    
    const int N = 1e6 + 5;
    int n;
    double a[N];
    
    signed main()
    {
        ios::sync_with_stdio(false);
    
        cin >> n;
        for (int i = 1; i <= n; i++)
            cin >> a[i];
    
        double ans = 0, ex = 0, exx = 0;
    
        for (int i = 1; i <= n; i++)
        {
            ans += a[i] * (3 * exx + 3 * ex + 1);
            exx = a[i] * (exx + 2 * ex + 1);
            ex = a[i] * (ex + 1);
        }
    
        cout << fixed << setprecision(1) << ans << endl;
    }
    
  • 相关阅读:
    Python程序执行时的不同电脑路径不同问题
    Python写的计算器程序(主要目的在于熟悉下正则表达式)
    占位符
    selenium自动化测试浏览器驱动安装(属于转载文章)
    python的pip升级问题
    索引
    视图
    事务
    引擎
    约束
  • 原文地址:https://www.cnblogs.com/mollnn/p/14469682.html
Copyright © 2011-2022 走看看