zoukankan      html  css  js  c++  java
  • 题解 lg3978 [TJOI2015]概率论 生成函数

    题意

    为了提高智商,ZJY 开始学习概率论。有一天,她想到了这样一个问题:对于一棵随机生成的 n 个结点的有根二叉树(所有互相不同构的形态等概率出现),它的叶子节点数的期望是多少呢?

    data range: (nle 1e9)

    思路

    实际上我是找规律A的这道题

    我们设 (f(x)) , (g(x)) 表示大小为 (x) 的所有不同构二叉树的个数和叶子节点个数和

    先推 (f(x)) , (f(x)=sum_{i=0}^{n-1}f(i)f(n-i-1)) ,边界条件 (f(0)=1,f(1)=1)

    然后会发现这个是卡特兰数,通项公式 (frac{{2n choose n}}{n+1})

    再推(g(x)), 设 (G(x)) 为大小为 (x) 的二叉树的叶子节点个数的普通型生成函数,其中 (a_ix^i) 代表叶子节点为 (i) 的二叉树有 (a_i)

    在草稿纸上用 (G(x)) ,来推一下 (g(x))再放到OEIS上搜,发现是中心二项式系数,也即 ({2n-2choose n-1})

    多棒!

    (m=n-1)

    则答案为 (frac{g(x)}{f(x)}=frac{(m+1)(m+2)}{2m+1})

    但这样不够严谨,对吧

    但是我也懒地写了

    详细证法请见

    较严谨 _rqy

    用生成函数推的 Niko

    后记

    我还是推一下吧要不然对不起生成函数的标题

    在推(g(x))的时候我们可以发现,实际上就是枚举左右两边的子树大小,子树的贡献是 子树的叶子节点数 乘上 另外一边的方案数。由于左右对称,要再乘2,也即 (g(x)=2sum_{i=0}^{x-1}g(i)f(n-i-1))

    再设 (g)(f) 的生成函数分别为 (G(x)) (F(x)) (注意,不要和上面那个我定义的(G(x)) 弄混)

    易知 (F(x)) 的封闭形式为 (frac{1-sqrt{1-4x}}{2x})

    根据 (g(x)) 的推导式我们可得 (G(x)=2xG(x)F(x)+x) , 所以 (G(x)=frac{x}{sqrt{1-4x}})

    ((xF(x))^{'}=frac{1}{sqrt{1-4x}}=frac{G(x)}{x})

    对于第n项来说来说,也即((xf(n)x^n)'=(n+1)f(n)x^n=frac{g(n+1)x^{n+1}}{x}=g(n+1)x^{n})

    所以(g(n)=nf(n-1)={2n-2choose n-1})

    (frac{g(n)}{f(n)}=frac{n(n+1)}{2(2n+1)})

  • 相关阅读:
    Jenkins操作学习 --邮箱配置及测试结果构建
    Jenkins操作学习 --初始化安装
    Jenkins操作学习 -- 配置及使用
    Jenkins登录后空白页
    Linux-(kill,wc,killall,ln,cal,date)
    Linux-(tar,gzip,df,du)
    Linux-(chgrp,chown,chmod)
    Linux-文件和目录属性
    Linux-(which,whereis,locate,find)
    Linux-(touch,cat,nl,more|less,head|tail)
  • 原文地址:https://www.cnblogs.com/fpjo/p/14376318.html
Copyright © 2011-2022 走看看