zoukankan      html  css  js  c++  java
  • [TJOI2015] 概率论

    Description

    (n le 10^9) 个节点的二叉树的叶子节点数期望。

    Solution

    (f_i) 表示 (i) 阶二叉树本质不同个数,(g_i) 表示所有本质不同 (i) 阶二叉树的树叶个数的和,则有

    [f_i = sum_{j=0}^{i-1} f_jf_{i-j-1}, quad g_i=2sum_{j=0}^{i-1} f_j g_{i-j-1} ]

    显然 (f_i) 是卡特兰数数列,有

    [f_n=frac {C_{2n}^n} {n+1} =frac {4n-2} {n+1} f_{n-1} ]

    然而 (g_i) 不好处理,下面我们证明 (g_n=nf_{n-1})

    对于 (n) 阶二叉树,设有 (k) 个叶子,分别删去得到 (k)(n-1) 阶二叉树。而每个 (n-1) 阶二叉树有 (n) 个位置可以悬挂新的叶子,这种添加方式唯一对应了一种删除操作,而删除操作的总数就是所有叶子的个数总和。因此,叶子个数的总和为 (nf_{n-1})

    于是有

    [frac {g_n} {f_n} = frac {nf_{n-1}} {f_n} =frac {n(n+1)}{4n-2} ]

    #include <bits/stdc++.h>
    using namespace std;
    
    signed main()
    {
        double n;
        cin>>n;
        printf("%.10lf",n*(n+1)/(4*n-2));
    }
    
    
  • 相关阅读:
    HashMap 链表插入方式 → 头插为何改成尾插 ?
    MySQL 日志之 binlog 格式 → 关于 MySQL 默认隔离级别的探讨
    Eclipse
    Delphi
    Delphi
    Delphi
    Delphi
    Delphi
    Delphi
    Delphi
  • 原文地址:https://www.cnblogs.com/mollnn/p/13657461.html
Copyright © 2011-2022 走看看