爱奇艺 牛牛和羊羊 数学 概率和期望

题目描述

牛牛和羊羊非常无聊.他们有n + m个共同朋友,他们中有n个是无聊的,m个是不无聊的。每个小时牛牛和羊羊随机选择两个不同的朋友A和B.(如果存在多种可能的pair(A, B),任意一个被选到的概率相同。),然后牛牛会和朋友A进行交谈,羊羊会和朋友B进行交谈。在交谈之后,如果被选择的朋友之前不是无聊会变得无聊。现在你需要计算让所有朋友变得无聊所需要的时间的期望值。

输入描述:

输入包括两个整数n 和 m(1 ≤ n, m ≤ 50)

输出描述:

输出一个实数,表示需要时间的期望值,四舍五入保留一位小数。

示例1

输入

2 1

输出

1.5
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
double cs2(double s)
{
    return s*(s-1)/2.0;
}
double ck2(double k)
{
    return k*(k-1)/2.0;
}
double cs_k1(double i)
{
    return i;
}
double cs_k2(double i)
{
    return i*(i-1)/2;
}
double ck1(double k)
{
    return k;
}
int main()
{
    double n,m;
    while(cin>>n>>m)
    {
        double s=n+m;
        double f0=0.0;
        double f1=s/2.0;
        double ans=0.0;
        for(int k=2;k<=m;++k)
        {
            ans=( 1.0 + f1*(cs_k1(s-k)*ck1(k)/cs2(s)) + f0*( ck2(k)/cs2(s) ) ) / (1.0-(cs_k2(s-k)/cs2(s)));
            f0=f1;
            f1=ans;
        }
        if(m==0)
        {
            printf("%.1lf\n",0.0);
        }else if(m==1)
        {
            printf("%.1lf\n",s/2.0);
        }else 
        {
            printf("%.1lf\n",ans);
        }
    }
    return 0;
} 
Last modification:January 12th, 2020 at 12:05 am
如果觉得我的文章对你有用,请随意赞赏