您的当前位置:首页正文

1017 Queueing at Bank (25 分)

2024-11-10 来源:个人技术集锦

问题描述:给定每个顾客的到达时间和处理时间,求平均等待时间。

解题思路:事件更新:储存每个窗口可以服务的时间,求所有窗口中最早完成可以服务的窗口k,则下一个到达的人应该在k窗口服务。比较是否需要等待即可。 可以与比较一下。本次只选择最早完成的窗口。而1014需要排队。

AC代码:

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
#define opt 8*60*60
#define clt 17*60*60
typedef struct cus{
	int arr,pro;
	cus(int a,int p):arr(a),pro(p){}
}cus;
vector<int>window;
vector<cus>customer;
bool cmp(cus &a,cus &b){return a.arr<b.arr;}
int update(cus &a)//更新,求每个窗口最小完成时间,然后更新该窗口的完成时间,并返回等待时间。 
{
	int m=window[0],k=0,t=0;
	for(int i=1;i<window.size();++i){
		if(window[i]<m)m=window[i],k=i;
	}
	if(a.arr<window[k]){
		t=window[k]-a.arr;
		window[k]+=a.pro;
	}else{
		window[k]=a.a
Top