HDU 4503

湫湫系列故事——植树节

老是刷水题,哈哈。练练手嘛,我不是专业人士。

这是一道概率题,我从来没写过概率题,所以没有解题思路。按概率论的思路来的话会很麻烦,我想了一会就放弃了。然后去看了看网上的题解,是这样说的:

从组合的角度来说,每个人又bi个朋友,也就是说有n-1-bi个人不是朋友,那么三个人不是都是朋友和都不是朋友的组合有bi*(n-1-bi)种。累加除以二(因为对于一种情况两个人都算了一遍)就是总组合数。

#include <cstdio>
#include <cstring>

using std::memset;

int t, n;
int C(int n, int m)
{
    int ans = 1 ;
    for(int i = n-m+1 ; i <= n; i++)
    {
        ans *= i;
    }
    for(int i = 1; i <= m; i++)
    {
        ans /= i;
    }
    return ans;
}

int main()
{
    scanf("%d", &t);
    while(t--)
    {
        scanf("%d", &n);
        int c = 0;
        for(int i = 0 ; i < n; i++)
        {
            int temp;
            scanf("%d", &temp);
            c += temp * (n - 1 - temp);
        }
        printf("%.3f\n", 1-c*1.0/C(n,3)/2);
    }
}



 

posted @ 2013-07-26 09:09  little_hsu  阅读(109)  评论(0编辑  收藏  举报