pat1014 Waiting in line

原创 2016年08月29日 16:41:11
#include<iostream>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<algorithm>
#include<stdlib.h>
using namespace std;
struct cus{
	int pt;
	int st;
	int ct;
};
int main(void){
	int n,m,k,q,i,j;
	cin >> n >> m >> k >> q;
	cus cu[1000];
	int cusq[1000];
	for(i = 0;i < k;++i)
	cin >> cu[i].pt;
	for(i = 0;i < q;++i)
	cin >> cusq[i];
	queue<cus>win[20];
	int wint[20],cust[20];
	for(i = 0;i < n;++i)
		wint[i] = 0;
	for(i = 0;i < m;++i){
		for(j = 0;j < n;++j){
			if(i > 0)
			cust[j] += cu[n*(i-1)+j].pt;
			else
				cust[j] = 0;
			cu[i*n+j].st = cust[j];
			cu[i*n+j].ct = cu[i*n+j].pt + cu[i*n+j].st;
			win[j].push(cu[i*n+j]);
			wint[j] += cu[i*n+j].pt;
		}
	}
	int min;
	int key;
	for(j = n*m;j < k;++j){
		min = win[0].front().ct;
		key = 0;
	for(i = 0;i < n;++i){
		if(win[i].front().ct < min){
			min = win[i].front().ct;
			key = i;
		}
	}
		cu[j].st = win[key].front().st + wint[key];
		//cout << win[key].front().st << wint[key] << endl;
		cu[j].ct = cu[j].pt + cu[j].st;
		wint[key] += cu[j].pt;
		wint[key] -= win[key].front().pt;
		win[key].pop();
		win[key].push(cu[j]);
	}
	for(i = 0;i < q;++i){
		if(cu[cusq[i]-1].st < 9*60)
		printf("%.2d:%.2d\n",8+cu[cusq[i]-1].ct/60,cu[cusq[i]-1].ct%60);
		else
			cout << "Sorry" << endl;
	}
	system("pause");
	return 0;
}

pat1014Waiting in Line (30)

题意分析: (1)本题模拟银行排队,逻辑上不难,操作起来有点麻烦。银行来了K个客户,银行有N个窗口,每个窗口前有M个位置排队,客户选择最短的队伍排,根据每个客户的序号和服务时间来确定最后客户离开银行的...
  • LostStephon
  • LostStephon
  • 2015年10月02日 20:33
  • 355

【PAT1014】 Waiting in Line (30) queue模拟排队

1014. Waiting in Line (30) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard...
  • tiantangrenjian
  • tiantangrenjian
  • 2014年02月20日 22:23
  • 3049

PAT 1014. Waiting in Line

题目:http://pat.zju.edu.cn/contests/pat-a-practise/1014 题解: 模拟题。 先把n*m个客户加入对应的n的窗口队列中,如果还有客户,枚举判断出n个窗口...
  • ACM_Ted
  • ACM_Ted
  • 2014年03月04日 17:21
  • 1830

1014. Waiting in Line (30)——PAT (Advanced Level) Practise

题目信息: 1014. Waiting in Line (30) 时间限制 400 ms 内存限制 32000 kB 代码长度限...
  • xianyun2009
  • xianyun2009
  • 2014年09月25日 20:02
  • 717

PAT_A 1014. Waiting in Line (30)

1014. Waiting in Line (30)Suppose a bank has N windows open for service. There is a yellow line in f...
  • scylhy
  • scylhy
  • 2016年12月03日 13:50
  • 197

1014. Waiting in Line (30)-PAT甲级真题(queue的应用)

1014. Waiting in Line (30) Suppose a bank has N windows open for service. There is a yellow line ...
  • liuchuo
  • liuchuo
  • 2017年01月15日 13:40
  • 271

PAT (Advanced Level) Practise 1014 Waiting in Line (30)

1014. Waiting in Line (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 ...
  • jtjy568805874
  • jtjy568805874
  • 2016年03月03日 23:26
  • 412

Waiting in Line

1014. Waiting in Line (30) 本题的思路逐一向队列中添加客户,如果队列全满则寻找最早完成的客户所在的队列,pop这个完成的客户,并将自己push到这个队列中,并记录自己的开始和...
  • mue719729509
  • mue719729509
  • 2016年11月28日 16:30
  • 79

【PAT】1014. Waiting in Line (30)

Suppose a bank has N windows open for service. There is a yellow line in front of the windows which ...
  • realxuejin
  • realxuejin
  • 2015年10月26日 19:01
  • 445

PAT-B 1014. 福尔摩斯的约会(python, C++)

python提交后竟然WA: 返回非零,不知道怎么搞,还是回到C的怀抱做题好了 —— py...
  • u014674776
  • u014674776
  • 2014年05月25日 03:19
  • 841
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:pat1014 Waiting in line
举报原因:
原因补充:

(最多只允许输入30个字)