bzoj4318 OSU!

题意

传送门

题解

考虑动态硅画。

$g(i)$ 表示以 $i$ 结尾的最长 $1$ 的期望长度,$l(i)$ 表示以 $i$ 结尾的最长 $1$ 的长度的平方的期望,$f(i)$ 表示以 $i$ 结尾的期望得分。

注意:这里 $l(i)\not= g(i)^2$ 。

然后 dp 就好了

调试记录

  • 精度炸了。。。

代码

#include <bits/stdc++.h>
using namespace std;

typedef long double ld;
int n;
ld S[100005], f[100005], g[100005], l[100005];

int main()
{
    scanf("%d", &n);
    for (int i=1; i<=n; i++) scanf("%Lf", &S[i]);
    for (int i=1; i<=n; i++) {
        g[i] = S[i] * (g[i-1] + 1);
        l[i] = S[i] * (l[i-1] + 2*g[i-1] + 1);
        f[i] = S[i] * (f[i-1] + 3*l[i-1] + 3*g[i-1] + 1) + (1-S[i]) * f[i-1];
    }
    printf("%.1Lf\n", f[n]);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/mchmch/p/bzoj-4318.html