题目: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; }