题意

求节点数为\(n\)的有根树期望的叶子结点数。(\(n \le 10^9\))

分析

神题就打表找规律..

题解

方案数就是卡特兰数,$h_0=1, h_n = \sum_{i=0}^{n-1} h_i h_{n-1-i} \(。
设叶子数量和为\)f_n\(,则得到\)f_n = 2 \sum_{i=0}^{n-1} f_i h_{n-1-i}\(
设\)H(x)\(表示\)h_n\(的母函数,\)F(x)\(表示\)f_n\(的母函数
容易得到:\)\(H(x) = x H^2(x) + 1\)$ $$F(x) = 2 x F(x) H(x) + x$$即:$$H(x) = \frac{1-\sqrt{1-4x}}{2x}$$ $$F(x) = \frac{x}{1-\sqrt{1-4x}}$$发现$$(xH(x))' = \sum_{i=0}^{\infty} (i+1)h_i x^i = \frac{1}{\sqrt{1-4x}} = \frac{F(x)}{x}$$即$$F(x) = \sum_{i=0}^{\infty} (i+1)h_i x^{i+1} = \sum_{i=1}^{\infty} i h_{i-1} x^i = \sum_{i=0}^{\infty} f_i x^i$$即\(f_i = i h_{i-1}\)

所以\(ans = \frac{f_n}{h_n} = \frac{n h_{n-1}}{h_n} = \frac{n(n+1)}{2(2n-1)}\)

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

【BZOJ】4001: [TJOI2015]概率论的更多相关文章

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

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

  2. BZOJ 4001 [TJOI2015]概率论 ——找规律

    题目太神了,证明还需要用到生成函数. 鉴于自己太菜,直接抄别人的结果好了. #include <map> #include <cmath> #include <queue ...

  3. 4001: [TJOI2015]概率论

    4001: [TJOI2015]概率论 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 262  Solved: 108[Submit][Status] ...

  4. 概率论 - BZOJ - 4001 TJOI2015

    TJOI2015 Problem's Link ---------------------------------------------------------------------------- ...

  5. 【BZOJ4001】[TJOI2015]概率论(生成函数)

    [BZOJ4001][TJOI2015]概率论(生成函数) 题面 BZOJ 洛谷 题解 这题好仙啊.... 设\(g_n\)表示\(n\)个点的二叉树个数,\(f_n\)表示\(n\)个点的二叉树的叶 ...

  6. [TJOI2015]概率论

    [TJOI2015]概率论 史上最短黑题 看起来一脸懵逼,没有取模,1e-9 根据期望定义,发现 分母是一个卡特兰数,,,,不能直接算 所以考虑怎么消掉一些东西 gn表示n个点的叶子个数和,fn表示n ...

  7. bzoj4001: [TJOI2015]概率论

    题目链接 bzoj4001: [TJOI2015]概率论 题解 生成函数+求导 设\(g(n)\)表示有\(n\)个节点的二叉树的个数,\(g(0) = 1\) 设\(f(x)\)表示\(n\)个节点 ...

  8. 【BZOJ4001】【Luogu P3978】 [TJOI2015]概率论

    题目描述: Description: Input 输入一个正整数N,代表有根树的结点数 Output 输出这棵树期望的叶子节点数.要求误差小于1e-9 Sample Input 1 Sample Ou ...

  9. BZOJ 4000: [TJOI2015]棋盘( 状压dp + 矩阵快速幂 )

    状压dp, 然后转移都是一样的, 矩阵乘法+快速幂就行啦. O(logN*2^(3m)) ------------------------------------------------------- ...

随机推荐

  1. 二刷Cracking the Coding Interview(CC150第五版)

    第18章---高度难题 1,-------另类加法.实现加法. 另类加法 参与人数:327时间限制:3秒空间限制:32768K 算法知识视频讲解 题目描述 请编写一个函数,将两个数字相加.不得使用+或 ...

  2. 完美解决window.navigator.geolocation.getCurrentPosition,在IOS10系统中无法定位问题

    目前由于许多用户都将电话升级到了iOS系统,苹果的iOS 10已经正式对外推送,相信很多用户已经更新到了最新的系统.然而,如果web站没有及时支持https协议的话,当很多用户在iOS 10下访问很多 ...

  3. java项目上线过程

    关于如何将Javaweb上线,部署到公网,让全世界的人都可以访问的问题.小编将作出系列化,完整的流程介绍. 1.在myeclipse中开发好项目,打包成war格式,不会的同学参考以下 http://z ...

  4. Linux 昨天时间

    今天date +%F昨天date -d yesterday +%F明天date -d tomorrow +%F七天前date -d "7 days ago" +%F

  5. Ubuntu和Win双系统解决主板时间差

    由于U和W两个系统的默认时间相差8小时,且会自动改变电脑主板里的默认时间,需要在U中进行设置. timedatectl set-local-rtc true

  6. mysql事务

    1. 事务并不专属于mysql 2. 事务的ACID特性 1)原子性(atomicity) 一个事务必须被视为一个不可分割的最小工作单元,整个事务中得所有操作要么全部提交成功,要么全部失败回滚,对于一 ...

  7. Launch Mode

    1.standard standard的加载模式不管是否已经存在Activity都会再次创建一个Acitivy,同时将新创建的Activity加入栈顶. 所以在这种加载模式下需要多次返回才能退出. 2 ...

  8. Lintcode 166. 主元素

    ----------------------------------- Moore's voting algorithm算法:从一个集合中找出出现次数半数以上的元素,每次从集合中去掉一对不同的数,当剩 ...

  9. PHP中计算时间段

    在php中 strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳. 语法strtotime(time,now)  time函数为需要转化为时间戳的时间点  now为返回值的 ...

  10. C++ 系列:多线程资源收集

    Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...