这是蒟蒻第一次写数学题的题解,如有错漏,欢迎指出!
=分割线===
【题面】
为了提高智商,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=0∑n−1fi×fn−i−1
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=0∑n−1(gi×fn−i−1)
然后我们观察一下两个递推式,我们发现它们长得很像,因此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 ∵x→0lim2x1+1−4x=+∞,x→0lim2x1−1−4x=1
∴
要
取
负
号
,
即
F
(
x
)
=
1
−
1
−
4
x
2
x
∴要取负号,即F(x)=\frac{1- \sqrt{1-4x} }{2x}
∴要取负号,即F(x)=2x1−1−4x
这个东西的极限很容易求吧,分子有根式,我们将分子有理化即可,在此不再阐述。
那么根据广义二项式定理我们来展开一下
1
−
4
x
\sqrt{1-4x}
1−4x
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
1−4x=(1−4x)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∑+∞C2−1i(−4x)i
同样考虑第n项的系数是什么,易得:
C
−
1
2
n
(
−
4
)
n
=
C
2
n
n
C_{\frac{-1}{2}}^{n}(-4)^n=C_{2n}^n
C2−1n(−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=C2n−2n−1
终于,我们求到了这两个东西。
所以我们最后可以得到结果:
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=−211−4x+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;
}