最優服務次序問題
設有n個顧客同時等待一項服務,顧客i所需要的服務時間爲ti,應如何安排顧客的服務次序,才能使平均等待時間最短?平均等待時間是n個顧客等待服務時間的總和除以n。
測試用例:
10(顧客數)
56 121 99 1000 234 33 55 99 812(所有顧客的服務時間)
輸出:
532(最小平均等待時間)
解:
最優服務次序問題:
要想等待時間最短,就要將服務時間見最短的先進行服務
所以就是按照服務時間進行排序之後的服務次序
而在計算等待時間的時候需要加上前面的顧客服務時間
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
int n;
int a[100];
scanf("%d",&n);
int sum=0;
int temp=0;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
sort(a,a+n);
for(int i=0;i<n;i++)
{
temp+=a[i];
sum+=temp;
}
printf("%lf",sum*1.0/n);
return 0;
}