zoukankan      html  css  js  c++  java
  • 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; 
    }
    

      

  • 相关阅读:
    体温上报APP2.2(第二阶段总结)
    体温上报APP2.1
    体温上报APP2.0
    体温上报APP1.2
    体温上报APP1.1
    个人作业——体温上报APP
    安卓学习14(ViewPager)
    安卓学习13(RecyclerView)
    安卓学习12(ListView)
    javascript获得给定日期的前一天的日期
  • 原文地址:https://www.cnblogs.com/guangheli/p/12187767.html
Copyright © 2011-2022 走看看