//先对数字进行排序,然后分割分别取平均值即可
//这里用到了一些动态规划的思想
//另外题目描述中有集合等字样
//实际上并不需要查重
#include<iostream>
#include<iomanip>
#include<algorithm>
using namespace std;
int list[1001];
int main(){
int T;
cin >> T;
while(T--){
int n;
cin >> n;
double ans = 0, sum_1 = 0, sum_2 = 0;
for(int i = 0; i < n; i++){
cin >> list[i];
sum_2 += list[i];
}
sort(list, list + n);
for(int i = 1; i < n; i++){
double count = 0, ave_1 = 0, ave_2 = 0;
sum_1 += list[i - 1];
sum_2 -= list[i - 1];
ave_1 = sum_1 / i;
ave_2 = sum_2 / (n - i);
for(int j = 0; j < i; j++)
count += ((double)list[j] - ave_2) * ((double)list[j] - ave_2);
for(int j = i; j < n; j++)
count += ((double)list[j] - ave_1) * ((double)list[j] - ave_1);
ans = max(ans, count);
}
cout << fixed << setprecision(4) << ans << endl;
}
return 0;
}
//presented by 大吉大利,今晚AC
合肥工业大学oj 1257 简单问题
猜你喜欢
转载自blog.csdn.net/lalala_HFUT/article/details/87967486
今日推荐
周排行