#include <iostream>
#include <cstdio>
using namespace std;
int main(){
double n;
cin >> n;
printf("%.9lf\n", n*(n+1)/2/(2*n-1));
return 0;
}
题解:
首先节点为
n
n
n的二叉树个数, 卡特兰数
C
i
=
∑
j
=
0
i
−
1
C
j
∗
C
i
−
j
−
1
C_i = \sum_{j = 0}^{i-1}{C_j*C_{i-j-1}}
Ci=∑j=0i−1Cj∗Ci−j−1, 其个数便是
C
n
C_n
Cn.
令其生成函数为F(x),由其递推式可以列出方程:
F
(
x
)
=
x
F
2
(
x
)
+
1
F(x)=xF^2(x)+1
F(x)=xF2(x)+1,
F
(
x
)
=
1
−
1
−
4
x
2
x
F(x)=\frac{1-\sqrt{1-4x}}{2x}
F(x)=2x1−1−4x.
接下来算期望,假设节点为
i
i
i个的二叉树期望是
p
i
p_i
pi,那么对于节点数为
n
n
n,左子树节点数为
l
l
l,右子树节点数为
r
r
r的树,总期望 * 总形态数 =
∑
\sum
∑(左形态数 * 左期望 * 右形态 + 右形态数 *右期望 * 左形态数)
即为:
p
i
∗
c
i
=
∑
j
=
0
i
−
1
(
c
j
∗
c
i
−
j
−
1
∗
(
p
j
+
p
i
−
j
−
1
)
)
p_i * c_i = {\sum_{j = 0}^{i-1}{(c_j*c_{i-j-1}*(p_j+p_{i-j-1}))}}
pi∗ci=∑j=0i−1(cj∗ci−j−1∗(pj+pi−j−1))
我们设
t
i
=
p
i
∗
c
i
t_i = p_i * c_i
ti=pi∗ci
那么有
t
i
=
∑
j
=
0
i
−
1
(
c
i
∗
t
i
−
j
−
1
+
t
i
∗
c
i
−
j
−
1
)
=
2
∑
j
=
0
i
−
1
c
i
∗
t
i
−
j
−
1
t_i = \sum_{j=0}^{i-1}{(c_i*t_{i-j-1}+t_i*c_{i-j-1})} = 2\sum_{j=0}^{i-1}c_i*t_{i-j-1}
ti=∑j=0i−1(ci∗ti−j−1+ti∗ci−j−1)=2∑j=0i−1ci∗ti−j−1
回想求卡特兰数列生成函数的递推方程的思维方式,由于卡特兰数列是多个项乘积的和,我们可以令生成函数相乘来相消:
F
2
(
x
)
=
(
c
0
+
c
1
x
+
c
2
x
2
+
.
.
.
.
.
.
)
∗
(
c
0
+
c
1
x
+
c
2
x
2
+
.
.
.
.
.
.
)
F^2(x) = (c_0+c_1x+c_2x^2+...... ) *(c_0+c_1x+c_2x^2+...... )
F2(x)=(c0+c1x+c2x2+......)∗(c0+c1x+c2x2+......)
=
c
0
c
0
+
(
c
0
c
1
+
c
1
c
0
)
x
+
(
c
0
c
2
+
c
1
c
1
+
c
2
c
0
)
x
2
+
.
.
.
.
.
.
.
=c_0c_0 + (c_0c_1+c_1c_0)x+(c_0c_2+c_1c_1+c_2c_0)x^2+.......
=c0c0+(c0c1+c1c0)x+(c0c2+c1c1+c2c0)x2+.......
=
c
1
+
c
2
x
+
c
3
x
2
+
.
.
.
.
.
.
.
.
=c_1+c_2x+c_3x^2+........
=c1+c2x+c3x2+........
=
F
(
x
)
−
c
0
x
=
F
(
x
)
−
1
x
=\frac{F(x)-c_0}{x} = \frac{F(x)-1}x
=xF(x)−c0=xF(x)−1
于是
F
(
x
)
=
x
F
2
(
x
)
+
1
F(x)=xF^2(x)+1
F(x)=xF2(x)+1
我们类比,这次不是两个
c
c
c相乘而是
c
∗
t
c*t
c∗t, 设
t
i
t_i
ti的生成函数是
G
(
x
)
G(x)
G(x):
F
(
x
)
∗
G
(
x
)
=
(
c
0
+
c
1
x
+
c
2
x
2
+
.
.
.
.
)
∗
(
t
0
+
t
1
x
+
t
2
x
2
+
.
.
.
.
)
F(x)*G(x)=(c_0+c_1x+c_2x^2+.... )*(t_0+t_1x+t_2x^2+....)
F(x)∗G(x)=(c0+c1x+c2x2+....)∗(t0+t1x+t2x2+....)
=
c
0
t
0
+
(
c
0
t
1
+
c
1
t
0
)
x
+
(
c
0
t
2
+
c
1
t
1
+
c
2
t
0
)
x
2
+
.
.
.
.
.
.
= c_0t_0+(c_0t_1+c_1t_0)x + (c_0t_2+c_1t_1+c_2t_0)x^2+......
=c0t0+(c0t1+c1t0)x+(c0t2+c1t1+c2t0)x2+......
= t 1 + t 2 x + t 3 x 2 + . . . . 2 = \frac{t_1+t_2x+t_3x^2+....}2 =2t1+t2x+t3x2+....
=
.
.
.
.
.
.
=......
=......
于是
G
(
x
)
=
2
x
F
(
x
)
G
(
x
)
+
x
G(x)=2xF(x)G(x)+x
G(x)=2xF(x)G(x)+x
G ( x ) = x 1 − 4 x G(x)=\frac{x} {\sqrt{1-4x}} G(x)=1−4xx
接下来开始玄学,注意到:
( x F ( x ) ) ′ = 1 1 − 4 x = G ( x ) x (xF(x))' = \frac{1}{\sqrt{1-4x}} = \frac{G(x)}x (xF(x))′=1−4x1=xG(x)
对两者之间有 c i x i + 1 c_ix^{i+1} cixi+1求导后 c i ( i + 1 ) x i c_i(i+1)x^i ci(i+1)xi, t i + 1 x i + 1 x = t i + 1 x i \frac{t_{i+1}x^{i+1}}x=t_{i+1}x^i xti+1xi+1=ti+1xi
说明 c i ( i + 1 ) = t i + 1 = c i + 1 p i + 1 c_i(i+1)=t_{i+1}=c_{i+1}p_{i+1} ci(i+1)=ti+1=ci+1pi+1,所以 p i = i ∗ c i − 1 c i p_i=\frac{i*c_{i-1}}{c_i} pi=cii∗ci−1
由卡特兰数公式 c i c i − 1 = 4 i − 2 i + 1 \frac{c_i}{c_{i-1}}=\frac{4i-2}{i+1} ci−1ci=i+14i−2
得到 p i = i ∗ ( i + 1 ) 4 ∗ i − 2 p_i=\frac{i*(i+1)}{4*i-2} pi=4∗i−2i∗(i+1)