Loading

【题解】CF1392H ZS Shuffles Cards

\(I=\{1,2,\cdots,n\}\),那么每一轮相当于会选出来 \(S\subseteq T\),当所有 \(S\) 的并集为 \(I\) 时游戏结束。

\(p_S\) 表示一轮游戏最后选出来 \(S\) 所需的期望进行时间,不难发现这个值只和 \(|S|\) 有关,令 \(p'_t\) 表示一轮游戏最后选出来 \(t\) 个数所需的概率。

很容易求出 \(p'_t=\frac{m}{n-t+m}\prod\limits_{i=1}^{t}\frac{n-i+1}{n-i+1+m}\),后面的式子只需要将分子分母拆开,上下都是连续整数的乘积,很容易预处理。

接下来就是处理最开始的问题了。定义 \(t_i\) 表示 \(i\) 第一次处于某轮的 \(S\) 中,那一轮 \(S\) 结束时的时间,注意到答案即为 \(E(\max(\{t_1,t_2\cdots,t_n\}))\),考虑 min-max 容斥:

\[E(\max(\{t_1,t_2,\cdots,t_n\}))=\sum_{T\subseteq \{t_1,t_2,\cdots,t_n\},T\not=\empty}(-1)^{|T|-1}E(\min (T)) \]

\(E(\min(T))\) 的值只和 \(|T|\) 有关,令 \(f_i\) 表示 \(E(\min(T)),|T|=i\),同时令\(G_i(x)=\sum\limits_{j=0}^{i}{i\choose j}p'_jx^{j+1}\) 表示一轮游戏的期望进行时间的多项式,可以得到:一个绕弯子的错误做法。(后面就是一堆什么 \(\sum\limits_{k\geq 0}(G^k)'\) 啥的,十分不可做的感觉)。


\(A\) 表示一轮游戏的期望进行时间,\(t_i\) 表示 \(i\) 是第几轮被选中的,那么答案就是 \(A\times E(\max (\{t_1,t_2,\cdots,t_n\}))\),即 "一轮游戏的期望进行时间" 乘上 "游戏期望进行轮数" 。

仍然像上面一样考虑 min-max 容斥 😅:

\[E(\max(\{t_1,t_2,\cdots,t_n\}))=\sum_{T\subseteq \{t_1,t_2,\cdots,t_n\},T\not=\empty}(-1)^{|T|-1}E(\min (T)) \]

这个做法就比上一个做法好做了,这是因为上一个做法没有利用轮与轮的期望时间之间互不影响,每一轮的期望时间相等的性质。

\(E(\min(T))\) 的值只和 \(|T|\) 有关,令 \(f_i\) 表示 \(E(\min(T)),|T|=i\) 。注意到此时对游戏有用的牌只有 \(i+m\) 张,如果以 \(\frac{i}{m+i}\) 的概率抽到了 \(i\) 张牌中的牌那么游戏结束,否则游戏轮数加一。因为游戏结束的概率为 \(\frac{i}{m+i}\),所以期望轮数为 \(\frac{m+i}{i}\),即 \(f_i=\frac{m+i}{i}\)

\(A\) 就很简单了,跟上面的 \(p_t'\) 的形式差不多。

代码:Submission #127566644 - Codeforces

posted @ 2021-09-01 10:44  Qiuly  阅读(54)  评论(0编辑  收藏  举报