zoukankan      html  css  js  c++  java
  • 【HDU 5810多校】Balls and Boxes(打表/数学)

    1.打表找规律,下面是打表程序:

    #include <iostream>
    #include <cstdio>
    #define ll long long
    #define N 100005
    using namespace std;
    ll n,m,b[N],ans,num;
    ll sqr(ll x)
    {
        return x*x;
    }
    void dfs(ll r){
        if(r==0){
            num++;
            for(int i=1;i<=m;i++)
                ans+=sqr(b[i]);
            return;
        }
        for(int i=1;i<=m;i++)
        {
            b[i]++;
            dfs(r-1);
            b[i]--;
        }    
    }
    int main() {
        while(~scanf("%lld%lld",&n,&m)){
            for(ll r=1;r<=n;r++){
                ans=num=0;
                dfs(r);
                ans=m*ans-r*r*num;
                num=m*m*num;
                ll g=__gcd(ans,num);
                printf("r=%lld: %lld/%lld
    ",r,ans/g,num/g);
            }
        }
    }

    2.数学

    V其实就是二项式分布的方差,可以这么理解:

    样本是第i个盒子:每次把1个球扔进第i个盒子的概率都是1/m,扔不进就是1-1/m,扔了n个球,于是Xi服从二项式分布。

    那么就可以直接用二项式的方差公式$D(X)=ncdot pcdot (1-p)$ 这里的p就是1/m。下面是AC程序:

    #include <algorithm>
    #include <cstdio>
    #define ll long long
    using namespace std;
    ll n,m;
    int main() {
        while(scanf("%lld%lld",&n,&m),n){
            ll a=n*(m-1),b=m*m;
            ll g=__gcd(a,b);
                printf("%lld/%lld
    ",a/g,b/g);
        }
    }

      

  • 相关阅读:
    使用Redis做MyBatis的二级缓存
    MySQL 类型转换
    mysql store procedure 存储过程
    swagger
    redis 持久化
    redis 发布/订阅 模式
    dfs模板
    二叉树
    拓扑排序
    最大公因数(辗转相除法)
  • 原文地址:https://www.cnblogs.com/flipped/p/5756318.html
Copyright © 2011-2022 走看看