[2019.3.6]BZOJ4001 [TJOI2015]概率论
发现答案=\(\frac{n\texttt{个点的不同二叉树的叶子数量和}}{n\texttt{个点的不同二叉树数量}}\)
\(n\)个点的不同二叉树数量是卡特兰数的典型应用之一,NOIp2018提高组初赛还考过(单项选择第八题),卡特兰数的第\(n\)项是有\(n\)个节点的不同二叉树的数量(而题目里说是\(n+1\)个)。
那么设卡特兰数第\(i\)项为\(Ca_i\)。
设\(n\)个节点的不同二叉树的叶子数量和为\(N_i\)。
如何求\(N_i\)呢?
\(N_i=i\times Ca_{i-1}\)
为什么?
打个表找个规律就好了233
所以答案=\(\frac{n\times Ca_{n-1}}{Ca_n}\)
又有\(Ca_i=\frac{C^{2i}_i}{i+1}=\frac{(2i)!}{i!\times(i+1)!}\)
则答案\(=\frac{n\times(2n-2)!\times n!\times(n+1)!}{(2n)!\times(n-1)!\times n!}\)
\(=\frac{n(n+1)}{2(2n-1)}\)
code:
#include<bits/stdc++.h>
using namespace std;
double n;
int main(){
scanf("%lf",&n);
printf("%.9lf",n*(n+1)/((n*2-1)*2));
return 0;
}