题目描述

输入

输入一个正整数N,代表有根树的结点数

输出

输出这棵树期望的叶子节点数。要求误差小于1e-9

样例输入

1

样例输出

1.000000000

提示

1<=N<=10^9

设$f[n]$表示$n$个节点能形成二叉树的方案数,$g[n]$表示所有方案的叶子数之和

$ans=\frac{g[n]}{f[n]}$,f$[n]$就是卡特兰数(这是卡特兰数的一个应用)

那么$g[n]$怎么求呢?

假设一种$n$节点二叉树有$k$个叶子,那么$g[n]=\sum k$

我们将这$k$个叶子中任意一个点删除都能得到一种形态的$n-1$节点二叉树

那么$g[n]$就是所有$n$节点二叉树删除一个节点能得到的$n-1$节点二叉树的方案数之和

这样还是求不了啊?

我们反过来看,将$g[n]$看成是$n-1$节点二叉树加一个节点能形成$n$节点二叉树的方案数之和

考虑对于一种形态的$n-1$节点二叉树,每个点能向下连出两条边(连向左儿子和右儿子的边),$n-1$个节点就有$2n-2$条边

因为将这$n-1$个点连成一棵树已经占用了$n-2$条边,所以还有$n$条边的下端是空闲的,在这$n$条边下端任意一个位置加一个点都能形成一种形态的$n$节点二叉树

每种形态$n-1$节点二叉树都能形成$n$种$n$节点二叉树,共$f[n-1]$种形态,因此$g[n]=n*f[n-1]$

$f[n]=C_{2n}^{n}-C_{2n}^{n-1}=\frac{(2n)!}{n!(n+1)!}$,$ans=\frac{g[n]}{f[n]}=\frac{n*(n+1)}{2(2n-1)}$

#include<set>
#include<map>
#include<queue>
#include<cmath>
#include<stack>
#include<cstdio>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
int n;
double ans;
int main()
{scanf("%d",&n);ans=1.0*n*(n+1)/2;ans/=(2.0*n-1);printf("%.9lf",ans);
}

转载于:https://www.cnblogs.com/Khada-Jhin/p/9833479.html

BZOJ4001[TJOI2015]概率论——卡特兰数相关推荐

  1. BZOJ4001 TJOI2015概率论(生成函数+卡特兰数)

    设f(n)为n个节点的二叉树个数,g(n)为n个节点的二叉树的叶子数量之和.则答案为g(n)/f(n). 显然f(n)为卡特兰数.有递推式f(n)=Σf(i)f(n-i-1) (i=0~n-1). 类 ...

  2. [BZOJ4001] [TJOI2015] 概率论 [期望计数] [卡特兰数打表 / 生成函数广义二项式定理]

    [Link\frak{Link}Link] 预备结论们 卡特兰数 Cn=(2nn)−(2nn±1)C_n={2n\choose n}-{2n\choose n\pm1}Cn​=(n2n​)−(n±12 ...

  3. BZOJ4001[TJOI2015]概率论(数学、期望、生成函数、卡特兰数)

    题目传送:https://www.lydsy.com/JudgeOnline/problem.php?id=4001 Description Input 输入一个正整数N,代表有根树的结点数 Outp ...

  4. bzoj 4001: [TJOI2015]概率论(找规律)

    4001: [TJOI2015]概率论 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1033  Solved: 545 [Submit][Stat ...

  5. 洛谷 P3978 [TJOI2015]概率论

    传送门 题目描述 为了提高智商,ZJY开始学习概率论.有一天,她想到了这样一个问题:对于一棵随机生成的n个结点的有根二叉树(所有互相不同构的形态等概率出现),它的叶子节点数的期望是多少呢? 输入格式 ...

  6. Catalan数——卡特兰数

    今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来 后来查了下,原来是Catalan数.悲剧啊,现在整理一下 Catalan数--卡特兰数] 一.Catalan数的定义令h( ...

  7. 【COGS】2287:[HZOI 2015]疯狂的机器人 FFT+卡特兰数+排列组合

    [题意][COGS 2287][HZOI 2015]疯狂的机器人 [算法]FFT+卡特兰数+排列组合 [题解]先考虑一维的情况,支持+1和-1,前缀和不能为负数,就是卡特兰数的形式. 设C(n)表示第 ...

  8. 关于卡特兰数及典型例题

    关于卡特兰数: f[0] = 1, f[1] = 1; for(int i = 2; i <= n; i++)for(int j = 0; j < i; j++)f[i] += f[j] ...

  9. hdu1032 Train Problem II (卡特兰数)

    题意: 给你一个数n,表示有n辆火车,编号从1到n,入站,问你有多少种出站的可能.    (题于文末) 知识点: ps:百度百科的卡特兰数讲的不错,注意看其参考的博客. 卡特兰数(Catalan):前 ...

最新文章

  1. const 修饰指针
  2. linux redis WARNING overcommit_memory is set to 0! 解决方案
  3. php python 函数互相翻译的网站
  4. Java进阶高级程序员必备:深入浅出springboot+深入Java虚拟机
  5. 重磅!2021 高通人工智能应用创新大赛今日开赛
  6. 怎样用计算机算出别人的出生日期,【怀孕出生日期计算器_怀孕出生日期计算器专题】- 天鹅到家...
  7. [渝粤教育] 西南科技大学 政府经济学 在线考试复习资料
  8. java听课笔记(六)
  9. native react 更新机制_React Native - 组件的生命周期详解(附:各阶段调用的方法)...
  10. 2019 年编写现代 JavaScript 代码的5个小技巧
  11. linux 下各个工具使用(screen、tmux,pyenv、virtualenv,pip国内源,tree)
  12. 任务计划中的结果代码
  13. 第一次使用DataGrip,连接后看不到自己所有数据库
  14. 微信扫码访问网站调用默认浏览器打开如何实现?
  15. linux下常用vim命令
  16. UNITY游戏制作流程
  17. 数字证书是什么原理,有什么作用?
  18. 什么是SPA,有什么优缺点
  19. android高仿ios控制中心,控制中心IOS 13-安卓仿苹果ios控制中心插件
  20. 修改win10更新服务器,修改win10更新服务器地址

热门文章

  1. 对深度学习的逃逸攻击 — 探究人工智能系统中的安全盲区
  2. 【问链财经-EOS公开课】 第十九课 EOS存储之IPFS
  3. JZOJ 5933. 【NOIP2018模拟10.27】百鸽笼
  4. 由于c语言是由字符流组成的,C语言试题及答案
  5. 下列符合c语言语法的字符常量是,C语言程序设计(周经亚)选择题练习-chapter 5.doc...
  6. php三表关联,详解Yii2 hasOne(), hasMany()实现三表关联的两种方法
  7. java函数式编程_Java 函数式编程和 lambda 表达式详解
  8. 学校测试-2015-03-01
  9. 铺地毯pascal程序
  10. 笨小猴pascal题解