Live2D

CF1392H ZS Shuffles Cards 题解

link

Description

n 张数字牌以及 m 张鬼牌,有一个不可重集合 S,初始为空。不断执行以下操作:

  • 抽出一张牌,如果为数字牌,则加入 S 并移除。如果为鬼牌,如果当前 S=[1,n] 则结束。否则直接 remake 开启下一轮,注意 remake 后 S 不会改变,并且还是会有 n 张数字牌,m 张鬼牌。

问期望操作次数。n,m2×106

Solution

要退役了。/kk 挺有意思的题,但是被shaber翻译整破防了。

可以注意到的事情是每轮的期望操作次数是相同,那我们只需要分别算出期望轮数以及每轮的期望操作次数即可。

我们先考虑如何计算每轮的期望操作次数。我们发现,我们可以对于每一张数字牌考虑,因为都是均匀随机的,那么每一张数字牌出现在所有鬼牌之前的概率为 1m+1,所以每轮期望操作次数为 1+nm+1

然后我们就需要考虑如何计算期望轮数。有两种方法。


  • dp 求解

我们可以设 fi 表示 |S|=ni 时所需的期望轮数,那么我们可以得到转移式:

fi=mm+i(fi+1)+im+ifi1

fi=fi1+mi

所以期望轮数就是 1+i=1nmi


  • minmax 容斥

我们设 P(x) 表示 x 是第几轮抽出的,那我们即是求 E(maxxP(x)),那么也即是求:

T(1)|T|+1E(minxTP(x))

那么我们就需要对于任意一个集合考虑其最小轮数的期望。我们可以发现,假设集合大小为 x,每一轮有 xx+m 的概率抽到至少一张牌(这 x+m 张牌第一次出现的是数字牌的概率),所以期望操作 x+mx 轮。那么,显然答案就是:

i=1n(ni)(1)i+1i+mi


上面两种方法都是可做的,这道题主要的思路瓶颈就是想到期望轮数以及每轮期望操作次数都是独立的。

posted @   Dark_Romance  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2020-11-23 2020-11-23 考试总结
点击右上角即可分享
微信分享提示