【MATH】TJOI2015 BZOJ4001 LGP3978 概率论

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

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

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

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

那么我们现在要求这两个东西的通项公式,显然我们可以得到两个递推式:
f n = ∑ i = 0 n − 1 f i × f n − i − 1 f_{n}=\sum_{i=0}^{n-1}{f_i \times f_{n-i-1}} fn=i=0n1fi×fni1
g n =   2 × ∑ i = 0 n − 1 ( g i × f n − i − 1 ) g_{n}=\ 2\times \sum_{i=0}^{n-1} (g_{i}\times f_{n-i-1}) gn= 2×i=0n1(gi×fni1)

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

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

KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ F(x)=& x\time…

∵ lim ⁡ x → 0 1 + 1 − 4 x 2 x = + ∞ , lim ⁡ x → 0 1 − 1 − 4 x 2 x = 1 ∵\lim_{x \to 0}\frac{1+ \sqrt{1-4x} }{2x}=+\infty , \\ \lim_{x \to 0}\frac{ 1- \sqrt{1-4x} }{2x}=1 x0lim2x1+14x =+,x0lim2x114x =1

∴ 要 取 负 号 , 即 F ( x ) = 1 − 1 − 4 x 2 x ∴要取负号,即F(x)=\frac{1- \sqrt{1-4x} }{2x} F(x)=2x114x
这个东西的极限很容易求吧,分子有根式,我们将分子有理化即可,在此不再阐述。

那么根据广义二项式定理我们来展开一下 1 − 4 x \sqrt{1-4x} 14x
1 − 4 x = ( 1 − 4 x ) 1 2 = ∑ i = 0 + ∞ × C 1 2 i × ( − 4 x ) i \sqrt{1-4x}=(1-4x)^\frac{1}{2} =\sum_{i=0}^{+\infty}\times C_{\frac{1}{2}}^i \times (-4x)^i 14x =(14x)21=i=0+×C21i×(4x)i

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

KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ & (-4)^n C_{\f…

因此我们可以得到最后生成函数的结果:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ &F(x) \\ =&\fr…

根据生成函数,最终我们把第n项的系数拿出来:
f n = 1 n + 1 C 2 n n f_{n}=\frac{1}{n+1}C_{2n}^{n} fn=n+11C2nn
这样我们就得到了 f n f_{n} fn的通项公式!

同理:令 G ( x ) G(x) G(x) f x f_{x} fx的生成函数,我们可以得到
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ G(x)=& 2x\tim…

(以下因为本人太懒,不想打太多,所以请自行推导)
同样我们用 F ( x ) F(x) F(x)的套路,我们得到:
G ( x ) = ∑ i = 0 + ∞ C − 1 2 i ( − 4 x ) i G(x)=\sum_{i=0}^{+\infty}C_{\frac{-1}{2}}^{i}(-4x)^i G(x)=i=0+C21i(4x)i
同样考虑第n项的系数是什么,易得:
C − 1 2 n ( − 4 ) n = C 2 n n C_{\frac{-1}{2}}^{n}(-4)^n=C_{2n}^n C21n(4)n=C2nn

所以我们就可以得到:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ G(x)=& x\sum_{…
终于我们得到:
g n = C 2 n − 2 n − 1 g_{n}=C_{2n-2}^{n-1} gn=C2n2n1

终于,我们求到了这两个东西。
所以我们最后可以得到结果:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ \frac{g_{n}}{f…

最后,我们来放一种微积分的方法,由某个IMO大佬教学TAT
我们观察到:
∫ G ( x ) x d x = − 1 2 1 − 4 x + C = x F ( x ) \int \frac{G(x)}{x}dx=-\frac{1}{2} \sqrt{1-4x}+C=xF(x) xG(x)dx=2114x +C=xF(x)
所以只要求F(x)就可以很容易得到G(x),接着:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ ∵& xF(x)=\sum_…

完结撒花~

#include<iostream>
#include<cstdio>
using namespace std;

long long n;
double ans;

int main()
{
//	freopen("LGP3978.in","r",stdin);
//	freopen("LGP3978.out","w",stdout);
    
    scanf("%lld",&n);
    ans=(double)n*(n+1)/2.0/(1.0*(2*n-1));
    printf("%0.9f\n",ans);
    
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值