爱奇艺 牛牛和羊羊 数学 概率和期望
题目描述
牛牛和羊羊非常无聊.他们有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;
}