【MATH】TJOI2015 BZOJ4001 LGP3978 概率论

来源:互联网 发布:银行软件开发招聘 编辑:程序博客网 时间:2024/06/06 18:47

这是蒟蒻第一次写数学题的题解,如有错漏,欢迎指出!
===============分割线=================
【题面】
为了提高智商,ZJY开始学习概率论。有一天,她想到了这样一个问题:对于一棵随机生成的n个结点的有根二叉树(所有互相不同构的形态等概率出现),它的叶子节点数的期望是多少呢?

【输入格式】
输入一个正整数n,表示有根树的结点数

【输出格式】
输出这棵树期望的叶子节点数,要求误差小于1e-9
===============分割线=================

根据题意,我们知道其实最后答案的分母就是n个节点的所有本质不同的树的个数,而分子就是这些树的叶子节点和(前者就是卡特兰数)。
我们令fn为卡特兰数的第n项,gn为n个节点时这些树的叶子节点和

那么我们现在要求这两个东西的通项公式,显然我们可以得到两个递推式:

fn=i=0n1fi×fni1

gn= 2×i=0n1(gi×fni1)

然后我们观察一下两个递推式,我们发现它们长得很像,因此f和g是有关的,我们若求出f的通项公式,g也很容易求出来。

于是:令F(x)fx的生成函数,我们可以得到:

F(x)==x×F2(x)+11±14x2x

limx01+14x2x=+,limx0114x2x=1

F(x)=114x2x

这个东西的极限很容易求吧,分子有根式,我们将分子有理化即可,在此不再阐述。

那么根据广义二项式定理我们来展开一下 14x

14x=(14x)12=i=0+×Ci12×(4x)i

现在我们来考虑这个第n项的系数怎么求
我们可以得到:

=====(4)nCi12(4)n12(121)(122)...(12n+1)1×2×3×...×n(2)n1×(12)(14)...×(12n+2)1×2×3×...×n1×3×5×...×(2n3)1×2×3×...×n×1×2×4×...×2n1×2×3×...×n(2n)!(2n1)(n!)212n1Cn2n

因此我们可以得到最后生成函数的结果:

======F(x)114x2x1++i=0×12i1×Ci2i×xi2x+i=1×12i1×Ci2i×xi12i=0+(22i+1×Ci+12i+2×xi)i=0+(12×12i+1×(2i+1)(2i+2)(i+1)2×Ci2i×xi)i=0+(1i+1×Ci2i×xi)

根据生成函数,最终我们把第n项的系数拿出来:

fn=1n+1Cn2n

这样我们就得到了fn的通项公式!

同理:令G(x)fx的生成函数,我们可以得到

G(x)===2x×G(x)×F(x)+xx14xx(14x)12

(以下因为本人太懒,不想打太多,所以请自行推导)
同样我们用F(x)的套路,我们得到:

G(x)=i=0+Ci12(4x)i

同样考虑第n项的系数是什么,易得:
Cn12(4)n=Cn2n

所以我们就可以得到:

G(x)===xi=0+(Ci2i×xi)i=0+(Ci2i×xi+1)i=1+(Ci12(i1)×xi)

终于我们得到:
gn=Cn12n2

终于,我们求到了这两个东西。
所以我们最后可以得到结果:

gnfn====Cn12n2(n+1)C2nn(2n2)!((n1)!)2(n+1)(n!)2(2n)!n2(n+1)(2n1)2nn(n+1)2(2n1)

最后,我们来放一种微积分的方法,由某个IMO大佬教学TAT
我们观察到:

G(x)xdx=1214x+C=xF(x)

所以只要求F(x)就可以很容易得到G(x),接着:
==xF(x)=i=1+Fi1xiddxxF(x)=114xi=0+(i+1)F(i)xi=G(x)xG(x)=i=1+iF(i1)xign=n×fn1n1n1+1Cn12(n1)Cn2n

完结撒花~

原创粉丝点击