这道题。。。好像是第一道我自己切出来的黑题。。。

先说一句,牛顿二项式蒟蒻并不会,可以说是直接套结论。

求诸位老爷轻喷。


这道题用卡特兰数搞。

卡特兰数这玩意从普及组初赛一路考到省选,十分有用。

如果不清楚这个概念的话可以看一下这里。

卡特兰数是有两种计算方法:

1) 用递推算。

2) 用排列组合。

用它解题的流程一般是先说明所求的问题可以归到第一类中,然后再用第二类来计算具体的值。

像这道题就可以用卡特兰数水过。


我们假设\(f_i\)表示节点数为i的二叉树有多少种。

那么可以发现存在这样的关系:\(f_i=\sum_{k=1}^{i-1}f_{k}f_{i-k-1}\)。

这个东西满足卡特兰数的第一类表示方法。

所以运用第二类表示方法就可以得到\(f_i=\frac{1}{n+1}C^n_{2n}\)。

现在我们用\(h_i\)表示节点数为i的二叉树的叶子节点数量。

那根据\(f_i\)的值我们就可以得出递推式:\(h_i=2\sum_{k=0}^{i-1}h_kf_{i-k-1}\)

也就是\(h_i=C^{i-1}_{2i-2}\)

那么最终的答案就是\(\frac{h_i}{f_i}=\frac{C^{i-1}_{2i-2}}{\frac{1}{n+1}C^n_{2n}}=\frac{n(n+1)}{2(2n-1)}\)。

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#define qwq int
#define QAQ double
#define re register
using namespace std;
namespace Solve{inline void read(qwq &x){x=0;qwq f=1;char c=getchar();for(;c<'0'||c>'9';c=getchar())if(c=='-')f=-1;for(;c>='0'&&c<='9';c=getchar())x=x*10+c-'0';x*=f;}qwq n;QAQ ans;inline void solve(){read(n);ans=(QAQ)n*(QAQ)(n+1)/(QAQ)(2*n-1)/2;printf("%.9lf",ans);}
}
using namespace Solve;
qwq main(){solve();
}

转载于:https://www.cnblogs.com/ilverene/p/9850603.html

题解 P3978 【[TJOI2015]概率论】相关推荐

  1. P3978 [TJOI2015]概率论(生成函数)

    P3978 [TJOI2015]概率论 设fif_ifi​表示节点数为iii的二叉树有多少,gig_igi​表示节点数为iii的二叉树有多少叶子节点. fn=∑i=0n−1fifn−1−if_n = ...

  2. P3978 [TJOI2015]概率论

    \(\color{#0066ff}{ 题目描述 }\) 为了提高智商,ZJY开始学习概率论.有一天,她想到了这样一个问题:对于一棵随机生成的n个结点的有根二叉树(所有互相不同构的形态等概率出现),它的 ...

  3. 洛谷 P3978 [TJOI2015]概率论

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

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

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

  5. 【BZOJ】4001: [TJOI2015]概率论

    题意 求节点数为\(n\)的有根树期望的叶子结点数.(\(n \le 10^9\)) 分析 神题就打表找规律.. 题解 方案数就是卡特兰数,$h_0=1, h_n = \sum_{i=0}^{n-1} ...

  6. bzoj 4001 [TJOI2015]概率论 数学

    4010: [HNOI2015]菜肴制作 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...

  7. BZOJ4001[TJOI2015]概率论——卡特兰数

    题目描述 输入 输入一个正整数N,代表有根树的结点数 输出 输出这棵树期望的叶子节点数.要求误差小于1e-9 样例输入 1 样例输出 1.000000000 提示 1<=N<=10^9 设 ...

  8. 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). 类 ...

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

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

最新文章

  1. 2ASK和2FSK相干解调误码率仿真matlab
  2. JZOJ 3129. 【WinterCamp 2013】数三角形
  3. spring3 常见异常解决
  4. android 面试总结,后续注意学习
  5. windows版本的clion软件除了使用wsl配置Ubuntu子系统外,还可以使用MinGW-w64来配置gcc和g++
  6. LeetCode 1284. 转化为全零矩阵的最少反转次数(BFS 矩阵状态编码解码)
  7. Redis 如何处理已经过期的数据?
  8. 怪盗基德的滑翔翼(信息学奥赛一本通-T286)
  9. 大数据的乘法实现——C语言
  10. Intellij IDE 必知配置
  11. java 身份证地址提取籍贯_从身份证号码中提取信息,这些方法请收好
  12. 前端特效demo | 值得收藏的6个 HTML5 Canvas 实用案例 1
  13. WCF 第十二章 对等网 使用自定义绑定实现消息定向
  14. BZOJ 4037 [HAOI2015]数字串拆分 ——动态规划
  15. 20135210——信息安全系统设计基础第一周学习总结
  16. oracle临时表的创建
  17. 将pdf文件转换成word,csv文件
  18. PAT乙级做题部分总结
  19. LNMP架构搭建编译安装详细部署
  20. 安卓搞机玩机-什么是“锁 ” BL锁 屏幕锁 账号锁 设备锁等分析

热门文章

  1. 判断回文数(用函数)并且输出范围a到b之间的所有回文数 c++
  2. arduino机器人设计与制作_百元搭建人工智能自主导航机器人
  3. linux 配置 java tomcat,Linux配置Tomcat和JDK
  4. python分类器鸢尾花怎么写_python机器学习基础教程:鸢尾花分类
  5. Android用按钮确定单选框,Android RadioButton单选框的使用方法
  6. php 响应时间计算,计算每个请求的平均响应时间
  7. 事务四大特性及隔离级别
  8. VB案例:DAO使用示例1
  9. python多个判断条件体重_python基础之如何用if语句判断多个条件?
  10. 计算机图形学应用:java2d和3d_?硬核儿童节礼物:MIT学神、太极作者胡渊鸣送你一门计算机课程...