CF235B Let's Play Osu!

传送门

题目大意

求出总得分的期望值。

思路

如果不知道期望的小朋友,赶紧去学一下期望,只给出求期望的公式:

CF235B Let's Play Osu!

CF235B Let's Play Osu!表示取值,CF235B Let's Play Osu!表示概率。

从题意中,很明显看出只有O才会对答案做出贡献。

因为CF235B Let's Play Osu!,所以每次多一个O就会多出CF235B Let's Play Osu!的贡献。

我们设CF235B Let's Play Osu!表示线性期望,CF235B Let's Play Osu!表示答案,得到CF235B Let's Play Osu!, 则CF235B Let's Play Osu!

AC代码

#include <cstdio>

#define RI register int

using namespace std;

template <class T>
inline void read(T &x) {
    T f = 1; x = 0; char c = getchar();
    while(c > '9' || c < '0') {
        if(c == '-')
            f = -f;
        c = getchar();
    }
    while(c >= '0' && c <= '9') {
        x = x * 10 + c - '0';
        c = getchar();
    }
    x *= f;
}

int n;
double l, ans, p;

int main() {
    read(n);
    for(RI i = 1; i <= n; i++) {
        scanf("%lf", &p);
        ans += (l * 2 + 1) * p;
        l = (l + 1) * p;
    }
    printf("%lf\n", ans);
    return 0;
}
上一篇:团体程序设计天梯赛 L2-003 月饼 (25分)


下一篇:B1051 复数乘法