atcoder#DPI. Coins

Coins

题目描述

N N を正の奇数とします。

N N 枚のコインがあります。 コインには 1, 2, , N 1,\ 2,\ \ldots,\ N と番号が振られています。 各 i i (1  i  N 1\ \leq\ i\ \leq\ N ) について、コイン i i を投げると、確率 pi p_i で表が出て、確率 1  pi 1\ -\ p_i で裏が出ます。

太郎君は N N 枚のコインをすべて投げました。 このとき、表の個数が裏の個数を上回る確率を求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N p1 p_1 p2 p_2 \ldots pN p_N

输出格式

表の個数が裏の個数を上回る確率を出力せよ。 絶対誤差が 109 10^{-9} 以下ならば正解となる。

题目大意

NN 枚硬币,第 ii 枚硬币有 pip_i 的概率正面朝上,有 1pi1-p_i 的概率反面朝上。
扔完所有硬币,求正面朝上的银币数比反面朝上的银币数多的概率。

3
0.30 0.60 0.80
0.612
1
0.50
0.5
5
0.42 0.01 0.42 0.99 0.42
0.3821815872

提示

制約

  • N N は奇数である。
  • 1  N  2999 1\ \leq\ N\ \leq\ 2999
  • pi p_i は実数であり、小数第 2 2 位まで与えられる。
  • 0 < pi < 1 0\ <\ p_i\ <\ 1

Sample Explanation 1

表の個数が裏の個数を上回るような各ケースの確率を計算すると、次のようになります。 - (コイン 1, コイン 2, コイン 3) = (, 表, 表) (コイン\ 1,\ コイン\ 2,\ コイン\ 3)\ =\ (表,\ 表,\ 表) となる確率は、0.3 × 0.6 × 0.8 = 0.144 0.3\ ×\ 0.6\ ×\ 0.8\ =\ 0.144 である。 - (コイン 1, コイン 2, コイン 3) = (, 表, 表) (コイン\ 1,\ コイン\ 2,\ コイン\ 3)\ =\ (裏,\ 表,\ 表) となる確率は、0.7 × 0.6 × 0.8 = 0.336 0.7\ ×\ 0.6\ ×\ 0.8\ =\ 0.336 である。 - (コイン 1, コイン 2, コイン 3) = (, 裏, 表) (コイン\ 1,\ コイン\ 2,\ コイン\ 3)\ =\ (表,\ 裏,\ 表) となる確率は、0.3 × 0.4 × 0.8 = 0.096 0.3\ ×\ 0.4\ ×\ 0.8\ =\ 0.096 である。 - (コイン 1, コイン 2, コイン 3) = (, 表, 裏) (コイン\ 1,\ コイン\ 2,\ コイン\ 3)\ =\ (表,\ 表,\ 裏) となる確率は、0.3 × 0.6 × 0.2 = 0.036 0.3\ ×\ 0.6\ ×\ 0.2\ =\ 0.036 である。 よって、表の個数が裏の個数を上回る確率は、0.144 + 0.336 + 0.096 + 0.036 = 0.612 0.144\ +\ 0.336\ +\ 0.096\ +\ 0.036\ =\ 0.612 です。

Sample Explanation 2

例えば、0.500, 0.500000001, 0.499999999 などを出力しても正解となります。