#CSP202109D. 收集卡牌

    ID: 569 Type: Default 1000ms 512MiB Tried: 6 Accepted: 3 Difficulty: 4 Uploaded By: Tags>CSP数据结构队列动态规划状态压缩DP搜索记忆化搜索概率论期望

收集卡牌

题目来自第 23 次 CSP 认证 T4,评测使用自造高质量复刻数据。我们承认原始题面与大样例版权均归中国计算机学会(CCF)所有,因此题面与评测服务均免费对外开放。如果您认为我们侵犯了您的权益,可联系我们。

时间限制: 1.0 秒

空间限制: 512 MB

题目描述

小林在玩一个抽卡游戏,其中有 nn 种不同的卡牌,编号为 11 到 nn。每一次抽卡,她获得第 ii 种卡牌的概率为 pip_i。如果这张卡牌之前已经获得过了,就会转化为一枚硬币。可以用 kk 枚硬币交换一张没有获得过的卡。

小林会一直抽卡,直至集齐了所有种类的卡牌为止,求她的期望抽卡次数。

提示:聪明的小林会把硬币攒在手里,等到通过兑换就可以获得剩余所有卡牌时,一次性兑换并停止抽卡。

输入格式

从标准输入读入数据。

输入共两行。第一行包含两个用空格分隔的正整数 n,kn, k,第二行给出 p1,p2,…,pnp_1, p_2, \dots, p_n,用空格分隔。

输出格式

输出到标准输出。

输出共一行,一个实数,即期望抽卡次数。如果你给出的答案与标准答案的绝对误差不超过 10−410^{-4},则视为正确。

2 2
0.4 0.6
2.52

样例 1 解释

共有 22 种卡牌,不妨记为 A 和 B,获得概率分别为 0.40.4 和 0.60.6,22 枚硬币可以换一张卡牌。下面给出各种可能出现的情况:

  • 第一次抽卡获得 A,第二次抽卡获得 B,抽卡结束,概率为 0.4×0.6=0.240.4 \times 0.6 = 0.24,抽卡次数为 22。
  • 第一次抽卡获得 A,第二次抽卡获得 A,第三次抽卡获得 B,抽卡结束,概率为 0.4×0.4×0.6=0.0960.4 \times 0.4 \times 0.6 = 0.096,抽卡次数为 33。
  • 第一次抽卡获得 A,第二次抽卡获得 A,第三次抽卡获得 A,用硬币兑换 B,抽卡结束,概率为 0.4×0.4×0.4=0.0640.4 \times 0.4 \times 0.4 = 0.064,抽卡次数为 33。
  • 第一次抽卡获得 B,第二次抽卡获得 A,抽卡结束,概率为 0.6×0.4=0.240.6 \times 0.4 = 0.24,抽卡次数为 22。
  • 第一次抽卡获得 B,第二次抽卡获得 B,第三次抽卡获得 A,抽卡结束,概率为 0.6×0.6×0.4=0.1440.6 \times 0.6 \times 0.4 = 0.144,抽卡次数为 33。
  • 第一次抽卡获得 B,第二次抽卡获得 B,第三次抽卡获得 B,用硬币兑换 A,抽卡结束,概率为 0.6×0.6×0.6=0.2160.6 \times 0.6 \times 0.6 = 0.216,抽卡次数为 33。

因此答案是 $0.24 \times 2 + 0.096 \times 3 + 0.064 \times 3 + 0.24 \times 2 + 0.144 \times 3 + 0.216 \times 3 = 2.52$。

4 3
0.006 0.1 0.2 0.694
7.3229920752

子任务

对于 100%100\% 的数据,保证 1≤n≤16,1≤k≤51 \leq n \leq 16, 1 \leq k \leq 5,所有的 pip_i 满足 pi≥110000p_i \geq \frac{1}{10000} 且小数点后不超过 66 位,且 ∑i=1npi=1\sum\limits_{i=1}^{n} p_i=1。

本题采用捆绑测试,你只有通过一个子任务中的所有测试点才能得到该子任务的分数。

子任务编号 分值 n≤n\le k≤k\le 特殊性质
1 20 55 55 ×\times
2 1616 ✓\checkmark
3 60 ×\times

特殊性质:所有 pip_i 是相等的。