传送门

生成函数好题。

题意简述:求nnn个点的树的叶子数期望值。


思路:

考虑fnf_nfn​表示nnn个节点的树的数量。

所以有递推式f0=1,fn=∑i=0n−1fifn−1−i(n>0)f_0=1,f_n=\sum_{i=0}^{n-1}f_if_{n-1-i}(n>0)f0​=1,fn​=∑i=0n−1​fi​fn−1−i​(n>0)

正是一个卷积的形式。

那么fnf_nfn​的生成函数F(x)=xF2(x)+1F(x)=xF^2(x)+1F(x)=xF2(x)+1 注意要填上f0f_0f0​

同理,考虑gng_ngn​表示nnn个节点的树的叶子数总数。

有递推式g0=0,g1=1,gn=2∑i=0n−1fign−i−1(n>1)g_0=0,g_1=1,g_n=2\sum_{i=0}^{n-1}f_ig_{n-i-1}(n>1)g0​=0,g1​=1,gn​=2∑i=0n−1​fi​gn−i−1​(n>1)

所以gng_ngn​的生成函数G(x)=2xF(x)G(x)+xG(x)=2xF(x)G(x)+xG(x)=2xF(x)G(x)+x 注意要填上g1g_1g1​

然后F(x)=xF2(x)+1F(x)=xF^2(x)+1F(x)=xF2(x)+1

<=>xF2(x)−F(x)+1=0xF^2(x)-F(x)+1=0xF2(x)−F(x)+1=0

<=>F(x)=1−1−4x2xF(x)=\frac{1-\sqrt{1-4x}}{2x}F(x)=2x1−1−4x​​ 不取1+1−4x2x\frac{1+\sqrt{1-4x}}{2x}2x1+1−4x​​是因为它不能向0收敛

G(x)=x1−2xF(x)=x1−4xG(x)=\frac x{1-2xF(x)}=\frac x{\sqrt{1-4x}}G(x)=1−2xF(x)x​=1−4x​x​

然后我们对xF(x)xF(x)xF(x)求导:(xF(x))′=11−4x=G(x)x(xF(x))'=\frac1{\sqrt{1-4x}}=\frac{G(x)}x(xF(x))′=1−4x​1​=xG(x)​

而对于xF(x)xF(x)xF(x)第nnn项fnxn+1f_nx^{n+1}fn​xn+1求导之后会变成fn(n+1)xnf_n(n+1)x^nfn​(n+1)xn等式右边:gn+1xn+1x=gn+1xn\frac{g_{n+1}x^{n+1}}x=g_{n+1}x^nxgn+1​xn+1​=gn+1​xn,那么gn+1=fn(n+1)g_{n+1}=f_n(n+1)gn+1​=fn​(n+1)

我们令答案的函数是A(x)=∑i=0∞pnxnA(x)=\sum_{i=0}^{\infty}p_nx^nA(x)=∑i=0∞​pn​xn

那么gn=fn−1n=pnfn=&gt;pn=fn−1nfng_n=f_{n-1}n=p_nf_n=&gt;p_n=\frac{f_{n-1}}{nf_n}gn​=fn−1​n=pn​fn​=>pn​=nfn​fn−1​​

仔细观察会发现fnf_nfn​是卡特兰数,然后带入就做完了。

代码:

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

2018.12.31 bzoj4001: [TJOI2015]概率论(生成函数)的更多相关文章

  1. 2018.12.31 bzoj3771: Triple(生成函数+fft+容斥原理)

    传送门 生成函数经典题. 题意简述:给出nnn个数,可以从中选1/2/31/2/31/2/3个,问所有可能的和对应的方案数. 思路: 令A(x),B(x),C(x)A(x),B(x),C(x)A(x) ...

  2. bzoj4001: [TJOI2015]概率论

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

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

  4. 2018.12.31 bzoj3992: [SDOI2015]序列统计(生成函数+ntt+快速幂)

    传送门 生成函数简单题. 题意:给出一个集合A={a1,a2,...as}A=\{a_1,a_2,...a_s\}A={a1​,a2​,...as​},所有数都在[0,m−1][0,m-1][0,m− ...

  5. 【bzoj4001】[TJOI2015]概率论 生成函数+导数

    题目描述 输入 输入一个正整数N,代表有根树的结点数 输出 输出这棵树期望的叶子节点数.要求误差小于1e-9 样例输入 1 样例输出 1.000000000 题解 生成函数+导数 先考虑节点个数为$n ...

  6. BZOJ4001 [TJOI2015]概率论 【生成函数】

    题目链接 BZOJ4001 题解 Miskcoo 太神了,orz #include<algorithm> #include<iostream> #include<cstr ...

  7. 2018.12.31 NOIP训练 偶数个5(简单数论)

    传送门 对于出题人zxyoizxyoizxyoi先%\%%为敬题目需要龟速乘差评. 题意简述:5e55e55e5组数据,给出n,请你求出所有n位数中有偶数个5的有多少,n≤1e18n\le1e18n≤ ...

  8. 2018.12.30 bzoj3028: 食物(生成函数)

    传送门 生成函数模板题. 我们直接把每种食物的生成函数列出来: 承德汉堡:1+x2+x4+...=11−x21+x^2+x^4+...=\frac 1{1-x^2}1+x2+x4+...=1−x21​ ...

  9. 2018.12.30 poj3734 Blocks(生成函数)

    传送门 生成函数入门题. 按照题意构造函数: 对于限定必须是出现偶数次的颜色:1+x22!+x44!+...=ex+e−x21+\frac {x^2}{2!}+\frac {x^4}{4!}+...= ...

随机推荐

  1. XFF的学习+修改源码--Are you in class

    这几天有做天枢CTF的“Are you in class”的题目,虽然以前了解过XFF,但还是没有很好地应用,而且最后居然掉进了一个大坑,且听我细细讲来.   打开题目,首先有个提示“在不在学校主要看 ...

  2. jquery 事件委托(利用冒泡)

    将事件绑定在父元素上,格式$(父元素).on("事件名称","子元素选择器",function(方法体){}) <!DOCTYPE html> &l ...

  3. TZOJ 2560 Geometric Shapes(判断多边形是否相交)

    描述 While creating a customer logo, ACM uses graphical utilities to draw a picture that can later be ...

  4. 计算Python运行时间

    可以调用datetime 或者 time库实现得到Python运行时间 方法1 import datetime start_t  = datetime.datetime.now() #运行大型代码 e ...

  5. Kylin介绍,功能特点【转】

    Apache Kylin是一个开源的分布式分析引擎.完全由eBay Inc.中国团队开发 并贡献至开源社区.提供Hadoop之上的SQL查询接口及多维分析(MOLAP)能力以 支持大规模数据能在亚秒内 ...

  6. Django具体操作(五)

    一.中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影 ...

  7. StringBuffer 和 StringBuilder 类

    当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类. 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够 ...

  8. ADT和DS

    Abstract Data Type vs. Data Structrue 抽象数据类型=数据模型+定义在该模型上的一组操作.  interface 数据结构=基于某种特定语言,实现ADT的一整套算法 ...

  9. python3 安装使用 fabirc3 模块以及 fab 命令(转)

    原文地址:https://blog.csdn.net/cityzenoldwang/article/details/78454964 python3 fabric3 模块之 fab 命令 安装 pyt ...

  10. centos7下Redis3的安装与使用

    redis是一个开源的,使用C语言编写的,支持网络交互的,可基于内存也可持久化的Key-Value数据库. 一.安装redis 下载redis源码 > wget http://download. ...