把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

【BZOJ4001】[TJOI2015] 概率论(卡特兰数)

点此看题面

大致题意: 问你一棵\(n\)个节点的有根二叉树叶节点的期望个数。

大致思路

看到期望,比较显然可以想到设\(num_i\)\(i\)个节点的二叉树个数,\(tot_i\)为所有\(i\)个节点的二叉树的叶节点总数。

则答案显然为\(\frac{tot_i}{num_i}\)

\(num_i\)其实就是一个卡特兰数(这其实就是\(NOIP2018\)提高组初赛卷中\(T8\)\(A\)选项改正后的结果啊),故可以得到\(num_i=(2n)!/(n+1)!/n!\)

通过找规律可以发现\(tot_i=n\cdot num_{i-1}\)

于是答案就是\(\frac{n\cdot num_{i-1}}{num_i}=\frac{n\cdot(2n-2)!/n!/(n-1)!}{(2n)!/(n+1)!/n!}=\frac{n}{2n(2n-1)/(n+1)/n}=\frac{n(n+1)}{4n-2}\)

代码也十分简洁。

代码

#include<bits/stdc++.h>
using namespace std;
int n;
int main()
{
    scanf("%d",&n),printf("%.9lf",1.0*n*(n+1)/(4LL*n-2));//求出n(n+1)/(4n-2)
    return 0;
}
posted @ 2018-11-25 18:57  TheLostWeak  阅读(174)  评论(0编辑  收藏  举报