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; }