【BestCoder Round #76 (div.2)】HDU5646DZY Loves Balls

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5645

问题描述
DZY喜欢玩球。

他有nn个球,装进一个大盒子里。每个球上面都写着一个整数。

有一天他打算从盒子中挑两个球出来。他先均匀随机地从盒子中挑出一个球,记为AA。他不把AA放回盒子,然后再从盒子中均匀随机地挑出一个球,记为BB。

如果AA上的数字严格大于BB上的数字,那么他就会感到愉悦。

现在告诉你每个球上的数字,请你求出他感到愉悦的概率是多少。
输入描述
第一行tt,表示有tt组数据。

接下来tt组数据。每组数据中,第一行包含一个整数nn,第二行包含nn个用空格隔开的正整数a_iai,表示球上的数字。

(1\le t\le 300, 2\le n \le 300,1\le a_i \le 3001t300,2n300,1ai300)
输出描述
对于每个数据,输出一个实数答案,保留6位小数。
输入样例
2
3
1 2 3
3
100 100 100
输出样例
0.500000
0.000000

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[1000];
int b[1000];
int n;
int main()
{
    int t;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        double sum=0;
        memset(b,0,sizeof(b));
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(i!=j&&a[j]<a[i]){
                    b[i]++;
                }
            }
            sum+=b[i]*1.0/(n-1);
        }
        printf("%.6lf\n",sum/n);
    }
    return 0;
}


你可能感兴趣的:(【BestCoder Round #76 (div.2)】HDU5646DZY Loves Balls)