Codeforces Global Round 10, H ZS Shuffles Cards

本文记录 conqueror_of_tourist 提出的解法

题目大意

考虑纸牌游戏:

牌堆由 \(\mathsf{1}\)\(\mathsf{n}\)\(n\) 张数字牌和 \(m\) 张鬼牌组成。初始时牌堆打乱。每回合中不断从堆顶取牌,取到鬼牌为止。记下本回合取出的数字牌。将取的牌全部放回牌堆,并将牌堆打乱。若至此全部 \(n\) 个数字都被取出过,游戏结束,否则进行下一回合。

求游戏结束时抽牌的总数的期望。

分析

第一步

答案 = 一回合抽的牌数的期望 × 回合数的期望

一回合取出的牌数的期望 = 一回合取出的数字牌的数量的期望 + 1

一回合取出的数字牌的数量的期望} = n × 在一个回合中数字 \(\mathsf{1}\) 被取出的概率

第二步

在一个回合中数字 \(\mathsf{1}\) 被取出的概率是 \(\frac{1}{m+1}\)

证明:在一个回合中数字 \(\mathsf{1}\) 被取出相当于数字 \(\mathsf{1}\) 排在全部 \(m\) 张鬼牌之前。设牌堆中数字 \(\mathsf{1}\) 之前有 \(x\) 张鬼牌,\(x\) 的取值有 \(0, 1, \dots, m\)\(m + 1\) 种,并且 \(x\) 取每个值的概率都相等,故在一个回合中数字 \(\mathsf{1}\) 被取出的概率为 \(\frac{1}{m+1}\)

至此知答案为 \((\frac{n}{m+1} + 1)\) × 回合数的期望。

第三步

设在当前回合开始或进行过程中还有 \(i\) 张数字牌从未取出的条件下,(包括当前回合)游戏还要进行的回合数的期望为 \(a_i\)。边界条件是 \(a_0 = 1\)。有递推
\(a_i = \frac{m}{m + i} (a_i + 1) + \frac{i}{m+i} a_{i - 1}\)\(i \ge 1\)
解得,\(a_i = \frac{m}{i} + a_{i - 1}\)\(i \ge 1\)
即有 \(a_i = m (1 + 1/2 + \dots + 1/i) + 1\)

注意,不能认为边界条件是 \(a_0 = 0\)。或者也可以从 \(a_1\) 满足的递推 \(a_1 = \frac{m}{m + 1} (a_1 + 1) + \frac{1}{m+1}\) 解出 \(a_1 = m + 1\) 作为边界条件。

至此知答案为 \((\frac{n}{m+1} + 1) \cdot (m (1 + 1/2 + \dots + 1/n) + 1)\)

posted @ 2020-08-18 23:11  Pat  阅读(295)  评论(3编辑  收藏  举报