P3978 [TJOI2015]概率论
-
C a t a l a n Catalan Catalan 数列适用的题型:
- 括号匹配,有 n n n 个左括号与 n n n 个右括号,合法匹配的方案数
- n n n 个元素出栈入栈的合法序列的数量
- n n n 个结点的二叉树的形态数量
- n n n 边形划分为三角形的方案数
- n ∗ n n*n n∗n 的网格中从左下角到右上角的方案数
分析:
-
那么这题显然就是有关二叉树形态数量的问题
-
让求的是叶子节点数的期望,设 f n f_n fn 表示具有 n n n 个节点的二叉树个数, g n g_n gn 表示具有 n n n 个节点的 f n f_n fn 棵二叉树的叶子节点总数
f n = ( n 2 n ) n + 1 f_n=\frac{(_n^{2n})}{n+1} fn=n+1(n2n)
至于这个 g n g_n gn (遇事不决先打表,滑稽)n 1 2 3 4 5 … f n f_n fn 1 2 5 14 42 … g n g_n gn 1 2 6 20 70 … 可以发现: g n = n f n − 1 g_n=nf_{n-1} gn=nfn−1
(这个规律我讲不灵清,洛谷题解传送门)
-
a n s = n f n − 1 f n = n ( n + 1 ) 2 ( 2 n − 1 ) ans=\frac{nf_{n-1}}{f_n}=\frac{n(n+1)}{2(2n-1)} ans=fnnfn−1=2(2n−1)n(n+1)
#include <bits/stdc++.h>
using namespace std;
signed main()
{
double n;
scanf("%lf",&n);
printf("%.12lf\n",(n*n+n)/(4*n-2));
return 0;
}