1017 Queueing at Bank (25 分)

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

解题思路:事件更新:储存每个窗口可以服务的时间,求所有窗口中最早完成可以服务的窗口k,则下一个到达的人应该在k窗口服务。比较是否需要等待即可。 可以与1014 Waiting in Line (30 分)比较一下。本次只选择最早完成的窗口。而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.arr+a.pro;
	}
	return t;
}
int main()
{
	freopen("test.txt","r",stdin);
	int N,K,h,m,s,p,i;
	scanf("%d%d",&N,&K);
	window.res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值