HDU 4503

可以反过来求不是相同关系的小朋友。相当于染色问题吧。

对于A小朋友,它的T个朋友和另外的(N-1-T)个同学就可以组成一个这样的三角形。T*(N-1-T),由于一条非染色边被计算两次,所以除以2.

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <algorithm>
#define LL __int64
using namespace std;

int main(){
	int n,T,t;
	scanf("%d",&T);
	while(T--){
		double ans=0;
		scanf("%d",&n);
		for(int i=1;i<=n;i++){
			scanf("%d",&t);
			ans+=t*(n-t-1)*1.0;
		}
		ans/=2;
		ans=ans*3*2/((n)*(n-1)*(n-2));
		printf("%.3lf
",1-ans);
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/jie-dcai/p/4367222.html