[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;
}
posted @ 2019-03-17 18:19  xryjr233  阅读(151)  评论(0编辑  收藏  举报