码迷,mamicode.com
首页 > 其他好文 > 详细

[TJOI2015]概率论[卡特兰数]

时间:2018-10-20 18:32:50      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:不同   printf   pre   int   子节点   一个   class   答案   code   

题意

\(n\) 个节点二叉树的叶子节点的期望个数。

\(n\leq 10^9\) .

分析

  • 实际询问可以转化为 \(n\) 个点的不同形态的二叉树的叶子节点总数。

  • 定义 \(f_n\) 表示 \(n\) 个节点的二叉树的个数, \(g_n\) 表示 \(n\) 个节点的不同形态的二叉树的叶子节点总数。

  • 设一棵 \(n\) 个节点的树有 \(m\) 个叶子节点,每删去一个叶子节点都可以得到一棵大小为 \(n-1\) 的二叉树,考虑每个大小为 \(n-1\) 的二叉树,共有 \(n\) 个叶子节点,会被 \(n\) 棵大小为 \(n\) 的树考虑叶子贡献。

  • 得到 \(g_n=\frac{n*f_{n-1}}{f_n}\)

  • \(f_n\) 是卡特兰数的第 \(n\) 项。

  • 化简之后答案为\(\frac{n(n+1)}{4n-2}\) .

代码

#include<cstdio>
using namespace std;
double x;
int main(){
   scanf("%lf",&x);
   printf("%.9lf\n",(x*(x+1)/2/(2*x-1)));
   return 0;
}

[TJOI2015]概率论[卡特兰数]

标签:不同   printf   pre   int   子节点   一个   class   答案   code   

原文地址:https://www.cnblogs.com/yqgAKIOI/p/9822306.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!