Description
有n种不同的邮票,皮皮想收集所有种类的邮票。唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n。但是由于凡凡也很喜欢邮票,所以皮皮购买第k张邮票需要支付k元钱。 现在皮皮手中没有邮票,皮皮想知道自己得到所有种类的邮票需要花费的钱数目的期望。
Input
一行,一个数字N N<=10000
Output
要付出多少钱. 保留二位小数
Sample Input
3
Sample Output
21.25
HINT
传送门
看的题解orz……
好复杂啊= =跟着它推了半天。。。
对了题目中“第k张邮票k元钱”,意思是你买的第k张而不是顺序里的第k张。。。
就当是给他的一个补充说明了。。
(无耻拿几个图)
设g(i)表示当前手上有i种邮票,要买到n种邮票还要买的期望张数。
pr(x,i)表示当前手上有i种邮票,又买了x张,买到n种邮票的概率。
g(i)如何表示?假设买一张就可以买到(i+1)种,买2张就可以买到(i+1)种……相当于枚举x
于是直接表示出g(i)的表达式(pr(x,i)直接表示出)
(无耻贴图=v=)
这个式子看似是无穷的,但是假如从g(i+1)推来弄一个递推的表达式,
那么就可以化无穷为有限的递推。
用错位相减法可以搞出来g(i)=g(i+1)+n/(n-i)
然后用f(i,j)表示有i种邮票,在买第j张(或者下一张要n)要买到n种的期望花费,
同理是可以枚举j的,然后统计期望花费,然而j是无穷的,
根据f(i,j)的定义式又可以写出这么个东西:
(唔。。偷偷拿个图)
这个式子是什么意义呢,,x枚举的是剩余买的次数,
那么还要买x次,从下次开始,先是j元,再是(j+1)元……
然后f(i,j)还可以写出一个递推的式子,因为可以考虑只买下一张邮票,
假如说买了下一张变成了(i+1)种,概率是i/n,(i+1)种的期望是f(i+1,j+1)
假如说买了下一张还是i种,概率是(n-i)/n,i种的期望是f(i,j+1)
也就是:
有了定义式和递推式,然而递推式子里有一个无穷的j,
所以再用f(i,j+1)-f(i,j),得出
竟然刚好是g(i)……太神了。。
于是可以把f(i,j)递推式里面的f(i,j+1),f(i+1,j+1)代掉了,然后化简,
但是化简之后还剩下f(i,j)?能够发现,j在递推中没有变,都是j项,
所以j项是可以直接省去的,答案是f(0,1),那么j都是1即可。
就得到了:
……慌张。。就这么推完了。。
再次orz……