P3978 [TJOI2015]概率论 (卡特兰数,打表)

49 篇文章 1 订阅
44 篇文章 0 订阅
这篇博客探讨了Catalan数在解决括号匹配、二叉树形态计数等问题中的应用。文章通过分析二叉树的叶子节点数的期望,给出了Catalan数的一个公式,并提供了相关递推关系。博主还分享了一个计算特定情况下二叉树形态数量的程序实现,用于计算从左下角到右上角的路径数。
摘要由CSDN通过智能技术生成

P3978 [TJOI2015]概率论

  • C a t a l a n Catalan Catalan 数列适用的题型:
    1. 括号匹配,有 n n n 个左括号与 n n n 个右括号,合法匹配的方案数
    2. n n n 个元素出栈入栈的合法序列的数量
    3. n n n 个结点的二叉树的形态数量
    4. n n n 边形划分为三角形的方案数
    5. n ∗ n n*n nn 的网格中从左下角到右上角的方案数
分析:
  • 那么这题显然就是有关二叉树形态数量的问题

  • 让求的是叶子节点数的期望,设 f n f_n fn 表示具有 n n n 个节点的二叉树个数, g n g_n gn 表示具有 n n n 个节点的 f n f_n fn 棵二叉树的叶子节点总数

    f n = ( n 2 n ) n + 1 f_n=\frac{(_n^{2n})}{n+1} fn=n+1(n2n)
    至于这个 g n g_n gn (遇事不决先打表,滑稽)

    n12345
    f n f_n fn1251442
    g n g_n gn1262070

    可以发现: g n = n f n − 1 g_n=nf_{n-1} gn=nfn1

    (这个规律我讲不灵清,洛谷题解传送门

  • a n s = n f n − 1 f n = n ( n + 1 ) 2 ( 2 n − 1 ) ans=\frac{nf_{n-1}}{f_n}=\frac{n(n+1)}{2(2n-1)} ans=fnnfn1=2(2n1)n(n+1)

#include <bits/stdc++.h>
using namespace std;

signed main()
{
    double n;
    scanf("%lf",&n);
    printf("%.12lf\n",(n*n+n)/(4*n-2));
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yezzz.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值