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

    传送门

    Loj
    BZOJ

    Solution

    我们考虑一下设(f(x))表示当(n)(x)时构造二叉树的方案数,(g(x))表示当(n)(x)时构造二叉树的叶子节点数的总和.
    仔细看一下这个句子:当$n$为$x$时构造二叉树的方案数.(Catalan)数无疑了,接着就是解决(g(x))是什么.
    现在不是有(g(x))个叶子对吧,那么我们把这些叶子分别删掉,那么就是(g(x))(n-1)的节点的树.
    然后算上贡献就是(f(x-1)*x)对吧.
    接着你可以写出一个式子:

    [Ans=frac{(2n-2)!n!(n+1)!}{(2n)!(n-1)!n!} \ =frac{n(n+1)}{2*(2n-1)} ]

    代码实现

    /*
      mail: mleautomaton@foxmail.com
      author: MLEAutoMaton
      This Code is made by MLEAutoMaton
    */
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    #include<queue>
    #include<set>
    #include<map>
    #include<iostream>
    using namespace std;
    #define ll long long
    #define re register
    #define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
    inline ll gl()
    {
    	ll f=1,sum=0;char ch=getchar();
    	while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
    	while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
    	return f*sum;
    }
    ll n;
    int main()
    {
    	n=gl();
    	printf("%.9lf
    ",n*(n+1)*1./((2*n-1)*2));
    	return 0;
    }
    
  • 相关阅读:
    Python return语句用法分析
    set built-in function
    dict built-in function
    String bulit-in function
    tuple built-in function
    Pyhton:List build-in function
    Python之如果添加扩展包
    关于编辑器
    attachEvent和addEventListener详解
    jquery异步调用页面后台方法
  • 原文地址:https://www.cnblogs.com/mleautomaton/p/10895438.html
Copyright © 2011-2022 走看看