题目:点击打开链接
题意:A和B玩小球,一共玩了三局,前两局A胜,第三局B胜,问最后B的得分总和大于A的可能性。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
typedef long long ll;
int a[2009];
int n;
const int N=10000+10;
ll d[N],s[N];
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++)
d[a[j]-a[i]]++;
}
for(int i=0;i<5001;i++){
for(int j=0;j<5001;j++){
s[i+j]+=d[i]*d[j];
}
}
ll ans=0;
for(int i=0;i<5001;i++){
for(int j=0;j<i;j++)
ans+=d[i]*s[j];
}
ll tot=n*(n-1)/2;
tot=tot*tot*tot;
printf("%.20lf\n",(double)ans/tot);
}