概率DP 收集郵票

2021-08-09 23:07:14 字數 828 閱讀 8424

問題 h: 收集郵票

時間限制: 1 sec 記憶體限制: 162 mb=

題目描述

有n種不同的郵票,皮皮想收集所有種類的郵票。唯一的收集方法是到同學凡凡那裡購買,每次只能買一張,並且買到的郵票究竟是n種郵票中的哪一種是等概率的,概率均為1/n。但是由於凡凡也很喜歡郵票,所以皮皮購買第k張郵票需要支付k元錢。 現在皮皮手中沒有郵票,皮皮想知道自己得到所有種類的郵票需要花費的錢數目的期望。

輸入 一行,乙個數字n n<=10000

輸出 要付出多少錢. 保留二位小數

樣例輸入

3 樣例輸出

21.25

思維題。

看網上題解有的長篇大論證了一堆,實際上並沒有必要。

設f[i]為買到了i種郵票,期望買完還要花的錢,g[i]表示當前買到了i種郵票,期望買完還要買的郵票數

g[i]=g[i+1]*(n-i)/n+g[i]*i/n+1

就是從g[i]買一張有(n-i)/n的概率轉移到g[i+1],i/n的概率轉移到自己。用逆推的思路考慮,就是這個式子了。再化簡一下。

f[i]=(g[i+1]+f[i+1])*(n-i)/n+(g[i]+f[i])*i/n+1

轉移思路同理。因為是逆推考慮的,假設最後買的郵票是1元,推回去的過程中,先假設當前的郵票是1元,並且知道之後期望買的郵票數,也就是g,就可以算出當前郵票的**了。

#include 

#define d double

#define n 10006

int n;d f[n],g[n];

int main()

BZOJ 1426 收集郵票 概率DP

f i 表示現在有 i 張,買到 n 張的期望 所以 f i f i 1 frac 費用提前計算,每張郵票看做一元,然後使後面每一張加1元 g i 表示當前為 i 張期望到 n 張時花掉的錢。那麼 g i g i 1 f i 1 fracf i frac 遞推即可 include include i...

bzoj 1426 收集郵票(概率期望dp)

time limit 1 sec memory limit 162 mb submit 551 solved 460 submit status discuss 有n n 種不同的郵票,皮皮想收集所有種類的郵票。唯一的收集方法是到同學凡凡那裡購買,每次只能買一張,並且 買到的郵票究竟是 n role...

Joyoi 收集郵票

題鏈 題解.1 期望dp,平方的期望不等於期望的平方。在這個題上坑了好久,也算是對期望的理解又深了一些。很好的題解 再闡述一下平方的期望是在什麼情況下可以遞推的 對於乙個隨機變數x,我們知道其每個取值的概率,那麼我們容易由定義得出這個隨機變數的期望e x p1 x1 p2 x2 以及這個隨機變數的平...