码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj4001: [TJOI2015]概率论

时间:2018-07-25 18:58:46      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:形式   大小   1.0   ret   class   etc   ++   using   name   

题目链接

bzoj4001: [TJOI2015]概率论

题解

生成函数+求导
\(g(n)\)表示有\(n\)个节点的二叉树的个数,\(g(0) = 1\)
\(f(x)\)表示\(n\)个节点的二叉树叶子节点的个数,\(f_0 = 0,f_1 = 1\)
那么\(ans = \frac{f_i}{g_i}\)
对于\(g_i\)
考虑有一颗\(n\)个点的二叉树,由于左右字数都是二叉树,枚举左右子树的点数
\[g_n = \sum_{i = 0}^{n - 1}g_ig_{n - i - 1}\]
这就是卡特兰数,通项为\(\frac{C_{2n}^{n}}{n + 1}\)
对于\(f_i\)
枚举左右子树的大小,我们可以有\(g\)函数推出,由于左右对称,最后\(*2\)
\[f_n = 2\sum_{i = 0}^{n - 1}f_i*g_{n - i - 1}\]
我们要找到\(f\)\(h\)的关系
\(G(x)\)\(g\)的生成函数,\(F(x)\)\(f\)的生成函数
\[G(x) = x G^2(x) + 1,F(x) = 2xF(x)G(x) + x\]
对于\(G(x)\)他的封闭形式为\(\frac{1-\sqrt{1-4x}}{2x}\),(对于另外一根不收敛,舍去)
\(F(x)\)得到\(F(x) = x * (1 - 4x)^{-\frac{1}{2}}\)

\[(xG(x))'=\frac 1{\sqrt{1-4x}}=\frac{F(x)}x\]
\(xG(x)\)的每一项\(xg_nx^n = g_nx^{n +1}\)求导后变为\((n + 1)g_nx^n\),也就等于等式右边的\(\frac{f_{n + 1}x^{n + 1}}{x} = f_{n + 1}x^n\) 也就是说\(f_{n + 1} = (n+1)g_n\)\(f_n=g_{n-1}\)
带入\(g_n =\frac{C_{2n}^{n}}{n + 1}\)
化简得到
\[ans =\frac{n(n + 1)}{2(2n + 1)}\]

代码

#include<bits/stdc++.h> 
using namespace std; 
inline int read() { 
    int x = 0,f = 1; 
    char c = getchar(); 
    while(c < '0' || c > '9')c = getchar(); 
    while(c <= '9' && c >= '0')x = x * 10 + c - '0',c = getchar(); 
    return x * f; 
} 
const int maxn = 1000005;
const int INF = 0x7fffffff; 


int main() { 
    double n; 
    cin >> n; 
    printf("%.9lf\n",n * (n + 1.0) / (4 * n  -2)); 
    return 0; 
} 
 

bzoj4001: [TJOI2015]概率论

标签:形式   大小   1.0   ret   class   etc   ++   using   name   

原文地址:https://www.cnblogs.com/sssy/p/9367548.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!