抓住仿生泪滴
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

 

“传说中的骨灰”之一。
 能召唤仿身泪滴的灵魂。
 召唤时不消耗专注值,而是血量。
能模仿召唤者的模样,进行战斗的灵魂。
然而无法模仿召唤者的心智。
此为永恒之城意图造王时,所留下的产物。
该题目有一句话描述,可以直接看最后一段。

        艾尔登法环的推出对魂系玩家有一个好消息和一个坏消息,好消息是味儿很正,坏消息是味儿太正了。好在宫崎老贼为了大家的身心健康,特地加入了骨灰机制,甚至创造了仿身泪滴来给玩家当大哥,借着仿身泪滴的力量,玩家(唤灵蜗牛)可以比较轻松的通关。
很多玩家召唤了仿身泪滴,但是自己却惨死,导致大量仿身泪滴逃脱控制,游离在外。
        红狮子城要举行击杀拉塔恩的盛典了,各地英雄慕名而来,受到你的邀请,各地游离的仿身泪滴也前来参加盛典。前来参加盛典的人排队从正门进入,并且每个人会在门口进行登记。作为主办方负责人的你,会为每一个不是仿身泪滴的来客标记一个大于 0 的整数编号,而所有的仿身泪滴都会获得编号 0。待到所有来宾到齐后,你宣布了这次盛典的真正目的——清剿仿身泪滴。为了避免仿身泪滴模仿他人,造成混乱,你谋划了这场阴谋来将仿身泪滴一网打尽;然而仿身泪滴们也早已察觉不对,在他们进入会场之后就已经随机模仿了一个已经在会场的人。
        这样一来,你无法正确识别仿身泪滴,秉承着宁杀错不放过的思想,你将要击杀在场所有长相相同(编号相同)的人。然而,如果要杀的人太多,会导致他们反杀你,因此你希望通过来宾的登记列表来计算出你要杀的人的期望。
你可以确定的是:
  • 除了仿身泪滴以外,其他来宾的编号都是唯一的;
  • 第一个进场的来宾不是仿身泪滴。
        简单来说,给定一个长度为 n 的整数序列 ,其中 区间内的数字至多出现一次,0 至多出现 n-1 次,且 。紧接着,重复操作:找到满足 的最小位置 i,令 ,其中 r 上等概率分布的随机整数。直到找不到符合条件的 i,操作停止。随后,去除掉序列中所有出现次数大于 1 的数字,求被去除数字个数的期望。

输入描述:

第一行包括一个整数 n,代表来参加盛典的人数。
第二行包括 n 个整数,表示参加盛典的来宾编号,由空格隔开。

输出描述:

仅包含一个数字,表示要击杀的人数的期望,四舍五入精确到小数点后六位。
示例1

输入

复制
2
1 0

输出

复制
2.000000

说明

第二个来宾是仿身泪滴,在场的只有一个编号为 1 的来宾,那么它必然模仿 1,两人都被杀。
示例2

输入

复制
4
1 0 2 0

输出

复制
3.333333

说明

第二个来宾是仿身泪滴,它必然模仿编号为 1 的来宾。第四个来宾也是仿身泪滴,那么此时它可能模仿第一个来宾 1,也有可能模仿第二个仿身泪滴,同样变成 1,也有可能变成第三个来宾 2,那么被杀的人数的期望就是 (3+3+4)/3=3.333333

备注:

,来宾编号均属于