atcoder#DPJ. Sushi

Sushi

题目描述

N N 枚の皿があります。 皿には 1, 2, , N 1,\ 2,\ \ldots,\ N と番号が振られています。 最初、各 i i (1  i  N 1\ \leq\ i\ \leq\ N ) について、皿 i i には ai a_i (1  ai  3) 1\ \leq\ a_i\ \leq\ 3) 個の寿司が置かれています。

すべての寿司が無くなるまで、太郎君は次の操作を繰り返し行います。

  • 1, 2, , N 1,\ 2,\ \ldots,\ N の目が等確率で出るサイコロを振り、出目を i i とする。 皿 i i に寿司がある場合、皿 i i の寿司を 1 1 個食べる。 皿 i i に寿司が無い場合、何も行わない。

すべての寿司が無くなるまでの操作回数の期待値を求めてください。

输入格式

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

N N a1 a_1 a2 a_2 \ldots aN a_N

输出格式

すべての寿司が無くなるまでの操作回数の期待値を出力せよ。 相対誤差が 109 10^{-9} 以下ならば正解となる。

题目大意

现有N(1N300)N(1 ≤ N ≤ 300)个盘子,编号为1,2,3,,N1,2,3,…,N。第ii个盘子中放有ai(1ai3)a_i(1≤a_i ≤3)个寿司。

接下来每次执行以下操作,直至吃完所有的寿司。从第1,2,3,,N1,2,3,…,N个盘子中任选一个盘子,吃掉其中的一个寿司。若没有寿司则不吃。

若将所有寿司吃完,请问此时操作次数的数学期望是多少?

3
1 1 1
5.5
1
3
3
2
1 2
4.5
10
1 3 2 3 3 2 3 2 1 3
54.48064457488221

提示

制約

  • 入力はすべて整数である。
  • 1  N  300 1\ \leq\ N\ \leq\ 300
  • 1  ai  3 1\ \leq\ a_i\ \leq\ 3

Sample Explanation 1

1 1 個目の寿司を食べるまでの操作回数の期待値は 1 1 です。 その後、2 2 個目の寿司を食べるまでの操作回数の期待値は 1.5 1.5 です。 その後、3 3 個目の寿司を食べるまでの操作回数の期待値は 3 3 です。 よって、全体の操作回数の期待値は 1 + 1.5 + 3 = 5.5 1\ +\ 1.5\ +\ 3\ =\ 5.5 です。

Sample Explanation 2

例えば、3.00, 3.000000003, 2.999999997 などを出力しても正解となります。