BZOJ4001[TJOI2015]概率论——卡特兰数
题目描述
输入
输入一个正整数N,代表有根树的结点数
输出
输出这棵树期望的叶子节点数。要求误差小于1e-9
样例输入
样例输出
提示
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]概率论——卡特兰数相关推荐
- 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). 类 ...
- [BZOJ4001] [TJOI2015] 概率论 [期望计数] [卡特兰数打表 / 生成函数广义二项式定理]
[Link\frak{Link}Link] 预备结论们 卡特兰数 Cn=(2nn)−(2nn±1)C_n={2n\choose n}-{2n\choose n\pm1}Cn=(n2n)−(n±12 ...
- BZOJ4001[TJOI2015]概率论(数学、期望、生成函数、卡特兰数)
题目传送:https://www.lydsy.com/JudgeOnline/problem.php?id=4001 Description Input 输入一个正整数N,代表有根树的结点数 Outp ...
- bzoj 4001: [TJOI2015]概率论(找规律)
4001: [TJOI2015]概率论 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1033 Solved: 545 [Submit][Stat ...
- 洛谷 P3978 [TJOI2015]概率论
传送门 题目描述 为了提高智商,ZJY开始学习概率论.有一天,她想到了这样一个问题:对于一棵随机生成的n个结点的有根二叉树(所有互相不同构的形态等概率出现),它的叶子节点数的期望是多少呢? 输入格式 ...
- Catalan数——卡特兰数
今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来 后来查了下,原来是Catalan数.悲剧啊,现在整理一下 Catalan数--卡特兰数] 一.Catalan数的定义令h( ...
- 【COGS】2287:[HZOI 2015]疯狂的机器人 FFT+卡特兰数+排列组合
[题意][COGS 2287][HZOI 2015]疯狂的机器人 [算法]FFT+卡特兰数+排列组合 [题解]先考虑一维的情况,支持+1和-1,前缀和不能为负数,就是卡特兰数的形式. 设C(n)表示第 ...
- 关于卡特兰数及典型例题
关于卡特兰数: f[0] = 1, f[1] = 1; for(int i = 2; i <= n; i++)for(int j = 0; j < i; j++)f[i] += f[j] ...
- hdu1032 Train Problem II (卡特兰数)
题意: 给你一个数n,表示有n辆火车,编号从1到n,入站,问你有多少种出站的可能. (题于文末) 知识点: ps:百度百科的卡特兰数讲的不错,注意看其参考的博客. 卡特兰数(Catalan):前 ...
最新文章
- 老男孩IT教育在线3期新学员司毅的计算机的基础知识
- 【算法与数据结构】查找二叉树的实现
- python入门html_python-html入门
- AI 是中性的技术,如何用它更好地为人类服务
- 家庭无线组网 网友经济无线上网搭配方案
- keras 中 reuse 问题
- 优秀!Github上10个开源免费的后台控制面板你值得拥有!
- 十四、Oracle学习笔记:集合操作
- (二三)计算机组成原理笔记整理之系统总线(总线判优方式,标准传输率,数据总线,地址总线与MDR,MAR的关系等)
- 梯度、散度、旋度、拉普拉斯算子
- 用html设计logo,终于知道网页logo设计要点
- 苹果手机来电归属地_手机号码归属地能否取消?工信部回应...
- Android:高德定位及搜索周边地址
- STM32 JTAG SWD (PB3 PB4用作普通IO)及启动模式
- IOS 自定义软键盘功能,修改换行键为发送键
- Laplace(拉普拉斯)平滑
- GIS论坛网站推荐!
- 新的放假规定,大年三十还得朝九晚五!
- 学习心得——双色球彩票系统
- 【网页全屏截图问题总结】
热门文章
- js如何同时打开多个信息窗口 高德地图_高德地图显示单个窗体和显示多个窗体的方法...
- 从0到1,了解NLP中的文本相似度 1
- Android 进程保活手段分析
- 用 Go 构建一个区块链 -- Part 6: 交易(2)
- Binder子系统之调试分析(三)
- Android 5.1 Settings源码简要分析
- python重复字符串n次_python装饰器听了N次也没印象,读完这篇你就懂了
- JZOJ 5691. 【GDOI2018Day2模拟4.25】求和
- python调用lib_基于python调用libvirt API
- sqlserver 储存过程 批量更新_大白菜怎么储存过冬,好吃还不烂?掌握方法,其实很简单...