CF1392H ZS Shuffles Cards(概率)
題目大意
有 \(n + m\) 張不同的牌,其中有 n 張牌是編號 \(1 \to n\) 的,剩下的 m 張牌是鬼牌,但有標號。
現在我們對牌隨機打亂以后做如下兩個操作,且每個操作耗時 1:
如果牌頂不是鬼牌,那么把牌頂的牌的編號加入集合 s,然后把牌放到一邊
如果第一張牌是鬼牌,那么先看看集合 s 是不是包含 1 到 n 的所有元素,如果是就結束游戲,否則隨機打亂所有的牌(包括之前放到一邊的牌),繼續游戲。
求游戲結束的期望時間
數據范圍
解題思路
官方題解是個大麻煩思路,但評論區里有神仙給出了神奇而簡潔的做法,下面簡單介紹一下
首先你發現即使你已經湊夠了 n 個元素,但沒有抽到鬼牌仍不能結束游戲,而我們可以求出一次洗牌操作次數的期望值,然后求出期望下洗牌多少次即可
先求出操作次數的期望,對於每一張牌放到第一張鬼牌的前面的概率是 \(\frac {1}{m+1}\),因此總共的期望就是 \(\frac n{m+1}+1\)
考慮期望下洗牌多少次,正着不好做?我們用 \(min-max\) 容斥,答案就是 \(\sum_{i=1}^n{n \choose i}(-1)^{i+1}g_i\),\(g_i\) 表示抽到第一張的期望次數
顯然有 \(g_i = \sum_{j=0}[tim > j] = \sum_{j=0}(\frac {m}{m+i})^j=\frac {m+i}{i}\), 答案也可以輕松算出了
但正着真的不好做嗎?神仙給出了更簡潔的做法,設 \(f_i\) 表示還要湊 n 個的期望次數
如果本次沒撈着,那么期望是 \(\frac {m}{m + i} \times f_i + 1\),否則就是 \(\frac {i}{m+i} \times f_{i-1}\)
化簡方程得到 \(f_i= \frac {m}{i} + f_{i-1}\) 邊界條件是 \(f_0 = 1\),得到 \(f_n = \sum_{i=1}^n\frac 1i\)
最后的一個問題就是為什么 \(\sum_{i=1}^n \frac 1i = \sum_{i=1}^n {n \choose i} (-1)^{i+1}\frac {1}{i}\)
這個問題是上面正推和倒推的兩個式子的化簡形式,請教了 ztb 學長,可以用數學歸納法證明,但 ei 說有積分證明的方法,我不是很會,路過的大佬可以教教我 😁
