• BZOJ 4001: [TJOI2015]概率论 生成函数+求导


    求:$n$ 个点的二叉树叶子个数期望.

    设 $f_{n}$ 表示 $n$ 个点所有不同的二叉树叶子总个数,$g_{n}$ 表示 $n$ 个点不同的二叉树个数.

    则有 $ans=frac{f_{n}}{g_{n}}$

    有 $g_{n}=sum_{i=0}^{n-1}g_{i}g_{n-i-1}$

    同时,这个 $g$ 的定义就是卡特兰数,所以还有 $g_{n}=frac{inom{2n}{n}}{n+1}$

    设 $G(x)$ 表示 $g$ 的生成函数,则有 $G(x)=xG(x)^2+1$

    解得 $G(x)=frac{1- sqrt{1-4x}}{x}$

    我们将 $G(x)=frac{1+ sqrt{1-4x}}{x}$ 舍掉的原因是 $G(0)$ 没有任何意义(当验证生成函数的合法性时可以将 0 带入)

    有 $f_{n}=2 imes sum_{i=0}^{n-1}f_{i}g_{n-i-1}$,$F(x)=2xF(x)G(x)+x^{1}$ (我们向右平移生成函数时会损失掉最低位)

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

    得到 $F,G$ 的生成函数后,我们要试图寻找 $F,G$ 的关系.

    有 $’(xG(x))=frac{1}{sqrt{1-4x}}=frac{F(x)}{x}$

    求完导后,$xG(x)$ 的第 $i$ 项为 $g_{i} imes (i+1) imes x^{i}$

    $frac{F(x)}{x}$ 中第 $i$ 项为 $f_{i+1} imes x_{i}$,故有 $g_{i} imes (i+1)=f_{i+1}$

    所以最终答案就是 $frac{g_{n-1} imes n}{g_{n}}$    

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

      

  • 相关阅读:
    nyoj 230/poj 2513 彩色棒 并查集+字典树+欧拉回路
    nyoj 211 Cow Contest
    nyoj 203 三国志 dijkstra+01背包
    nyoj 170 网络的可靠性
    nyoj 120 校园网络
    nyoj 115 城市平乱 dijkstra最短路
    nyoj 42 一笔画问题 欧拉路径
    nyoj 38 布线问题
    hdu 2089 不要62--数位dp入门
    nyoj 712 探 寻 宝 藏--最小费用最大流
  • 原文地址:https://www.cnblogs.com/guangheli/p/12187767.html
Copyright © 2020-2023  润新知