题目链接:洛谷

题目大意:求所有$n$个点的有根二叉树的叶子节点数总和/$n$个点的有根二叉树的个数。

数据范围:$n\leq 10^9$


生成函数神题!!!!(我只是来水博客的)

首先$n$个点的有根二叉树的个数就是卡特兰数,我们考虑求分子。

设卡特兰数$g_i=\frac{C_{2n}^n}{n+1}$,分子是$f_i$则

$$f_n=2*\sum_{i=0}^{n-1}g_i*f_{n-i-1}(n\geq 2)$$

$$g_n=\sum_{i=0}^{n-1}g_i*g_{n-i-1}(n\geq 2)$$

$$f_0=0,f_1=g_0=g_1=1$$

设$f_i$和$g_i$的生成函数分别为$F(x),G(x)$则

$$G(x)=xG(x)^2+x$$

$$F(x)=2xF(x)G(x)+x$$

先解得

$$G(x)=\frac{1\pm\sqrt{1-4x}}{2x}$$

注意这里要用到一个技巧,就是当发现解出来有两个解的时候,我们可以代入特殊值。

我们发现$1=g_0=G(0)=\lim\limits_{x\rightarrow 0}\frac{1\pm\sqrt{1-4x}}{2x}$所以

$$G(x)=\frac{1-\sqrt{1-4x}}{2x}$$

代入第一个式子就可以得出

$$F(x)=\frac{x}{\sqrt{1-4x}}$$

因为我们知道$g_n$的通项公式,所以我们可以用生成函数来推出$f_n$

凑一下就知道是

$$(xG(x))'=(\frac{1-(1-4x)^{\frac{1}{2}}}{2})'=\frac{1}{\sqrt{1-4x}}=\frac{F(x)}{x}$$

然后就发现$G(x)$的其中一项$g_ix^i$经过运算后贡献到了$(i+1)g_ix^i$,$f_{i+1}x^{i+1}$贡献到了$f_{i+1}x^i$

所以$f_n=ng_{n-1}=C_{2n-2}^{n-1}$

所以

$$Ans=\frac{f_n}{g_n}=\frac{C_{2n-2}^{n-1}*(n+1)}{C_{2n}^n}=\frac{n(n+1)}{2(2n-1)}$$

(然后你就做完了别人打表做出来的东西)

不放代码了,这个只有8行。

luogu3978 [TJOI2015]概率论的更多相关文章

  1. 4001: [TJOI2015]概率论

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

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

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

  3. [TJOI2015]概率论

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

  4. bzoj4001: [TJOI2015]概率论

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

  5. P3978 [TJOI2015]概率论

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

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

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

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

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

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

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

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

随机推荐

  1. Tomcat connectionTimeout问题定位处理

    问题现象 在某个时刻,后端收到了平时4-6倍的请求(保密起见,略去产品和事件),在10分钟后居然没有请求可以接进来 问题原因 经过分析,首先,是后端服务器的线程池满了,线程池满的原因:1.server ...

  2. C#语法——泛型的多种应用 C#语法——await与async的正确打开方式 C#线程安全使用(五) C#语法——元组类型 好好耕耘 redis和memcached的区别

    C#语法——泛型的多种应用   本篇文章主要介绍泛型的应用. 泛型是.NET Framework 2.0 版类库就已经提供的语法,主要用于提高代码的可重用性.类型安全性和效率. 泛型的定义 下面定义了 ...

  3. mysql查询前几条记录

    #My SQL 取前多少条select * from table LIMIT 5,10; #返回第6-15行数据 select * from table LIMIT 5; #返回前5行 select ...

  4. HTTPS和SSL握手过程(转载)

    https介绍 HTTPS = HTTP + 一组对称.非对称和基于证书的加密技术 HTTPS是最常见的HTTP安全版本.它得到了很广泛的应用,所有主要的商业浏览器和服务器都提供HTTPS.HTTPS ...

  5. .NET内存泄漏(之 静态事件)

    一.事件引起的内存泄露 1.不手动注销事件也不发生内存泄露的情况 我们经常会写EventHandler += AFunction; 如果没有手动注销这个Event handler类似:EventHan ...

  6. VBA二次学习笔记(2)——两个Excel表内容比较

    说明(2018-9-3 22:38:58): 1. 就是之前问同事要来的作业,有两个格式一样的Excel文件,一个是正确答案,一个是员工作答的.通过代码将两个文件进行比对,把不同之处列出来. 正文: ...

  7. Kafka文件存储机制及offset存取

    Kafka是什么 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx ...

  8. Hadoop源码系列(一)FairScheduler申请和分配container的过程

    1.如何申请资源 1.1 如何启动AM并申请资源 1.1.1 如何启动AM val yarnClient = YarnClient.createYarnClient setupCredentials( ...

  9. vscode圣诞帽

    今天打开vscode,偶然发现左下角的圣诞帽子 vscode版本:

  10. iOS 更改状态栏颜色和隐藏状态栏

    更改状态栏颜色 iOS7以后 状态栏的字体为黑色:UIStatusBarStyleDefault 状态栏的字体为白色:UIStatusBarStyleLightContent 解决方案 1.在info ...