QOJ.ac

QOJ

时间限制: 3.0 s 内存限制: 512 MB 总分: 100 可 Hack ✓

#9283. 晾袜子

统计

Gleb 拥有 $n$ 种不同颜色的袜子。具体来说,他有 $a_i$ 双颜色为 $i$ 的袜子。他一双接一双地穿这些袜子,直到没有干净的袜子为止,这时就到了“大清洗”的时间。

Gleb 把所有的袜子都放进洗衣机进行洗涤和烘干,等待两三个小时。现在,最糟糕的部分开始了。Gleb 需要再次将袜子配对。为了简化过程,我们假设所有相同颜色的袜子都是不可区分的。换句话说,任何两只相同颜色的袜子都可以组成一对。显然,Gleb 从不会将两只不同颜色的袜子配成一对。

Gleb 执行以下过程。我们将洗衣机内所有袜子的集合记为 $A$,将所有尚未匹配且放在 Gleb 旁边的袜子的集合记为 $B$。

  1. Gleb 把手伸进洗衣机,检查 $A$ 中是否还有袜子。如果没有,过程结束。否则,他随机取出一只袜子($A$ 中的所有袜子被取出的概率相等),我们将这只袜子记为 $x$。这是一个单一动作,耗时正好一秒。
  2. 然后,他尝试在已经从洗衣机中取出且放在他身边、尚未配对的所有袜子中为这只袜子寻找配对,即集合 $B$ 中的所有袜子。
  3. Gleb 以随机顺序考虑 $B$ 中的所有袜子。所有顺序出现的概率相等。考虑 $B$ 中的一只袜子需要一秒钟。如果袜子 $x$ 与刚刚从 $B$ 中取出的袜子颜色相同,它们就组成一对,此步骤结束。
  4. 如果 $B$ 中的所有袜子都已被考虑且没有找到与 $x$ 的匹配,Gleb 就把 $x$ 放入未配对袜子的堆中。换句话说,袜子 $x$ 进入集合 $B$。
  5. Gleb 回到第一步。

在等待洗涤和烘干周期结束时,Gleb 想知道,上述过程预计需要多长时间?他上次参加编程比赛已经是几年前的事了,所以他需要你的帮助来找出答案。

输入格式

第一行包含一个整数 $n$ ($1 \le n \le 200\,000$),表示 Gleb 拥有的袜子颜色种类数。

第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le 5$),其中第 $i$ 个数表示 Gleb 衣柜中颜色为 $i$ 的袜子的双数。

输出格式

输出一个实数,表示 Gleb 按照给定步骤完成整个过程所需的期望秒数。如果你的答案与标准答案的绝对误差或相对误差不超过 $10^{-6}$,则该答案将被接受。

样例

样例输入 1

1
1

样例输出 1

3.000000000

样例输入 2

1
3

样例输出 2

9.000000000

样例输入 3

2
1 1

样例输出 3

7.000000000

样例输入 4

3
3 2 2

样例输出 4

29.571428571

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.