题目:Sumo and His Followers
来源:第十七届浙大城市学院程序设计竞赛(同步赛)

解题思路

个人,回答第 个人的问题需要 时间,求平均等待时间最少为多少?

每回答一个人 的问题,剩下 个人需要等待的总时间为
个人排队,则等待总时间为
所以,当 时,等待总时间最少。

C++代码

#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;

int main(){
    int T;
    scanf("%d", &T);
    while(T){
        int n;
        scanf("%d", &n);
        vector<int> t(n);
        for(int i=0; i<n; ++i)
            scanf("%d", &t[i]);
        sort(t.begin(), t.end());
        double sum = 0;
        int k = n - 1;
        for(int i=0; i<n; ++i){
            sum += t[i] * k;
            --k;
        }
        double ans = sum / n;
        printf("%.2f\n", ans);
        --T;
    }
    return 0;
}