题目求的是 求的最长的等待时间 最长等待时间需要满足最小,所以:
当顾客数量小于等于服务员数量时 最长等待时间为顾客等待时间最长加服务时间
当顾客数量大于服务员数量时 最长等待时间分两种情况
1、正好可以批次全部服务完 即顾客数量对服务员数量取余等于0 最长等待
#include<stdio.h> #include<algorithm> #include<functional> using namespace std; int main() { int n,i,a[110]; while(scanf("%d",&n),n) { for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); int fnum,ftime; scanf("%d%d",&fnum,&ftime); if(n<=fnum) printf("%d ",a[n-1]+ftime); else { if(n%fnum==0) printf("%d ",a[0]+(n/fnum)*ftime); else printf("%d ",a[n%fnum-1]+(n/fnum)*ftime+ftime); } } return 0; }
时间为顾客等待时间最短加服务时间乘以服务批次
2、无法批次服务完 则最长等待时间为剩余顾客等待时间最长的加服务时间乘以服务批次