有 \(n\) 次點擊要作,成功了就是 o
,失敗了就是 x
,分數是按 combo 計算的,連續 \(a\) 個 combo 就有 \(a\times a\) 分,combo 就是極大的連續o
。spa
設 \(f_i\) 表示前 \(i\) 秒指望分數,\(g_i\) 表示前 \(i\) 秒指望連續 combo。code
方程顯然:class
\(p\) 表示當前爲 o
的機率。im
const int N = 100010; int n; double x, f[N][2]; int main() { scanf ("%d", &n); for (int i = 1; i <= n; i++) { scanf ("%lf", &x); f[i][0] = f[i - 1][0] + (2 * f[i - 1][1] + 1) * x; f[i][1] = (f[i - 1][1] + 1) * x; } printf ("%.15lf", f[n][0]); return 0; }