BZOJ 1426 收集郵票

2021-07-29 03:54:49 字數 800 閱讀 3597

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

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

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

321.25

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

概率dp~

設f[i]表示已有i種,集齊n種還需的購買次數的期望值;g[i]表示還需錢數的期望值。顯然我們知道f[n]=g[n]=0,要求f[0]和g[0],所以我們倒著dp。

則f[i]=f[i]*(i/n)+f[i+1]*((n-i)/n)+1,即從現在一張重複和沒有重複兩種狀態更新而來,化簡得:

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

已知f[i],我們就可以列出g[i]的關係式:g[i]=(g[i+1]+f[i+1])*((n-i)/n)+(g[i]+f[i])*(i/n)+1,化簡得:

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

然後根據這個dp就好了~

注意所有除法都要加括號並強制轉化!

#include#includeusing namespace std;

int n;

double f[10001],g[10001];

int main()

BZOJ 1426 收集郵票

題目 1426 收集郵票 time limit 1 sec memory limit 162 mb description 有n種不同的郵票,皮皮想收集所有種類的郵票。唯一的收集方法是到同學凡凡那裡購買,每次只能買一張,並且買到的郵票究竟是n種郵票中的哪一種是等概率的,概率均為1 n。但是由於凡凡也...

bzoj 1426 收集郵票

f i 當前已擁有i種郵票,還需要買的郵票數的期望值。g i 當前已擁有i種郵票,還需要的錢的期望值。每張郵票初始都是1元錢,每買一張郵票,還沒購買的郵票每張都漲價1元。f i 1 n i n f i 1 i n f i f i f i 1 n n i g i 1 n i n g i 1 f i 1...

BZOJ1426 收集郵票

題面傳送門 令 f i 表示還剩 i 種模板沒有收集到,期望還需要買幾個模板 f i frac times f i frac times f i 1 1 解得 f i f i 1 n i 令 dp i 表示有 i 種模板沒收集到,期望需要多少錢買模板 dp i frac times dp i f i...