• Codeforces Global Round 10, H ZS Shuffles Cards


    本文记录 conqueror_of_tourist 提出的解法

    题目大意

    考虑纸牌游戏:

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

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

    分析

    第一步

    $ ext{答案} = ext{一回合抽的牌数的期望} imes ext{回合数的期望}$。

    $ ext{一回合取出的牌数的期望} = ext{一回合取出的数字牌的数量的期望} + 1$。

    $ ext{一回合取出的数字牌的数量的期望} = n imes ext{在一个回合中数字 $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) imes ext{回合数的期望}$。

    第三步

    设在当前回合开始或进行过程中还有 $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) (m (1 + 1/2 + dots + 1/n) + 1)$。

  • 相关阅读:
    ipv6 for openwrt odhcpd
    openwrt package Makefile
    openwrt 中个网络接口协议说明[转]
    openwrt Package aircrack-ng is missing dependencies for the following libraries:
    linux kernel 从cmdline 提取值
    js 上传文件进度条 [uboot使用]
    printk打印级别 [转]
    linux c 宏定义
    uboot 开发记录
    mac ssh scp命令
  • 原文地址:https://www.cnblogs.com/Patt/p/13526559.html
Copyright © 2020-2023  润新知