问题描述
设有n个顾客同时等待一项服务,顾客i需要的服务时间为ti(1<=i<=n)。应如何安排n个顾客有服务次序才能使平均等待时间达到最小?平均待时间是n个顾客等待服务时间的总和除以n。
分析
要让n个顾客的平均等待时间最少,得尽量让单个顾客等待时间最少,所以服务时间少的优先就行
代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<double> v;
double solve()
{
int n = v.size();
double t = v[0];
for (int i = 1; i < n;i++)
{
v[i] += v[i - 1];
t += v[i];
}
return t / n;
}
int main()
{
int n;
cin >> n;
double t;
while (n--)
{
cin >> t;
v.push_back(t);
}
sort(v.begin(), v.end());
cout<<solve()<<endl;
return 0;
}
输入
10
56 12 1 99 1000 234 33 55 99 812
输出
532