`
linest
  • 浏览: 155539 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古
社区版块
存档分类
最新评论

pat-1014* Waiting in Line

    博客分类:
  • pat
 
阅读更多
1014:
排队服务问题,队列实现。
注意条件控制。

#include <iostream>
using namespace std;
#include<queue>
#include<map>
#include<stdio.h>

struct People
{
	int id;
	int cost;
	bool start;
};
queue<People> q[30];
queue<People> wait;
map<int,int> finish;

void format(int n)
{
	if(n<0)
		printf("Sorry\n");
	else
		printf("%02d:%02d\n",8+n/60,n%60);
}

int main()
{
	int win;
	int cap;
	int num;
	int ask;
	int id;

	cin>>win;
	cin>>cap;
	cin>>num;
	cin>>ask;

	for(int i=1;i<=num;i++)
	{
		People p;
		p.id = i;
		p.start =false;
		cin>>p.cost;
		wait.push(p);
	}

	//initial
	while(q[win-1].size()!=cap && wait.size()!=0)
	{
		for(int k=0;k<win;k++)
		{
			if(q[k].size()<cap )
			{
				if(wait.size()>0)
				{
					q[k].push(wait.front());
				//cout<<"initial put "<<wait.front().id<<" into "<<k<<endl;
					wait.pop();
				}
			}
		}
	}

	for(int i=1;i<=540;i++) //time
	{
		for(int k=0;k<win;k++)
		{
			if(q[k].size()>0) //still have people
			{
				q[k].front().cost--;
				q[k].front().start = true;
				if(q[k].front().cost==0)
				{
					finish[q[k].front().id]=i;
					//cout<<q[k].front().id<<" pop from "<<k<<endl;
					q[k].pop();
					
					if(wait.size()>0) //into the queue
					{
						//cout<<wait.front().id<<" push into "<<k<<endl;
						q[k].push(wait.front());
						wait.pop();
					}
				}
			}
		}
	}

	for(int k=0;k<win;k++)
	{
		while(q[k].size()>0) 
		{
			if(q[k].front().start==true)
			{
				finish[q[k].front().id]=540+q[k].front().cost;
			}
			else
			{
				finish[q[k].front().id]=-1;
			}
			q[k].pop();
		}
	}

	while(wait.size()>0) 
	{
		finish[wait.front().id]=-1;
		wait.pop();
	}

	for(int i=0;i<ask;i++)
	{
		cin>>id;
		format(finish[id]);
	}

}
分享到:
评论

相关推荐

    arcinfo workstation命令手册

    - **ADDXY**: 把点或LAB点的X,Y坐标写入PAT文件。 - **COPYINFO**: 拷贝数据库文件。 - **DBASE**: 在ARC环境下启动dBASE(需安装dBASE)。 - **DROPITEM**: 从数据库文件中删除一个数据项。 - **IDEDIT**: 更新图层...

    pat甲级单词pat甲级单词pat甲级单词

    ### pat甲级单词知识点解析 #### 1. **逗号(Commas)** - **定义**: 逗号是一种标点符号,在编程语言中通常用于分割列表中的元素或参数。 - **用途**: 在C/C++等语言中,逗号用于数组初始化、函数参数列表等。 ####...

    Ruby语言笔记包括简介、主要特性、命令行选项、环境变量、基础语法等

    - **-F pat**: 指定pat作为默认的分割模式。 - **-e prog**: 指定prog作为命令行中的程序执行。 - **-h**: 显示命令行选项的帮助信息。 - **-i [ext]**: 将文件内容重写为程序输出,原始文件会被备份为.ext文件。 - ...

    计算机制图常用的图形和图像函数.doc

    - **语法**:`void line(int startx, int starty, int endx, int endy);` - **参数**:`startx`, `starty` 表示起始点坐标;`endx`, `endy` 表示结束点坐标。 - **返回值**:无 - **示例**:`line(10, 10, 50, 50);`...

    SQL21自学通.pdf

    它最初由IBM的三位研究人员Raymond Boyce、Donald Chamberlin和Pat Selinger于1970年代初提出,并在1986年被国际标准化组织(ISO)采纳为标准。 - **数据库简史**:数据库技术的发展可以追溯到20世纪50年代末期,...

    各大磁共振公司的序列名词对比表MRI Acronyms

    - **GE**: 使用PAT: Image-based Algorithm (mSENSE) 和 PAT: k-space-based Algorithm (GRAPPA) 表示。 - **Philips**: 使用ASSET表示。 - **描述**: 并行采集技术通过使用多个接收线圈并结合特定的算法来减少...

    华为交换机与路由远程登录配置

    - **出口路由配置静态PAT**:`Natservergrotocoltcpglobal128.8.8.10telnetinside192.168.10.30tel` - **开启ALG功能**:`Natalgftpenble` ##### R2配置 **1. 基本配置** - **进入全局模式**:`Sys` - **更改交换机...

    北师大版高中英语选修7(部分单词表)

    #### pat - **含义**:轻拍;拍 - **例句**:“He patted her on the back as a sign of encouragement.”(他轻拍她的背部作为鼓励。) #### congratulate - **含义**:祝贺 - **例句**:“Everyone congratulated...

    哈希PAT700总有机碳分析仪使用说明书

    ### 哈希PAT700总有机碳分析仪使用说明书关键知识点 #### 一、设备规格与技术参数 **1. 外形尺寸:** - **尺寸:**59.7×22.9×25.4厘米(23.5×9×10英寸) - **外壳防护等级:** - 快速连接接线模型:IP46 - ...

    TS协议之PAT(节目关联表)

    PAT(Program Association Table,节目关联表)是TS协议中的关键组成部分,用于建立节目(频道)与节目映射表(PMT,Program Map Table)之间的关联。PAT与PMT成对出现,共同构成了TS数据解析的基础。 PAT数据结构...

    CCNA(640-802)

    - **PAT**: 端口地址转换,允许多个私有地址共享一个公有IP地址。 以上是对CCNA(640-802)技术文档中提到的主要知识点的详细介绍,涵盖了网络基础、路由协议、交换原理以及广域网等多个方面,对于理解网络技术具有...

    最全Cisco命令

    - **功能:** 使用PAT技术(端口地址转换)将内部源地址列表1映射到外部接口f0/1上,并支持多对一的转换。 - **命令:** ```cisco Cisco2811(config)#interface f0/0 ``` - **功能:** 进入接口配置模式。 - **...

    医院常用的数据结构pdf

    入院病情字典PAT_ADM_CONDITION_DICT - **定义**:记录患者入院时的具体病情。 - **用途**:为治疗提供依据。 #### 22. 工作组类字典STAFF_GROUP_CLASS_DICT - **定义**:记录不同的工作组类别。 - **用途**:有助...

    RCNP一本通

    - **原理**: 锐捷三层交换机SVI口in/out机制 - **配置**: 标准/扩展IP ACL配置、VTY调用ACL - **示例场景**: 如何通过IP ACL防止未经授权的访问。 - **排错**: 场景IP ACL配置故障 **锐捷防ARP欺骗 (占比9%)** - *...

    中国民航最新订座编程开发接口E_Build_api

    查询PAT公布运价** - **定义**: 查询PATA区域内航线公布的票价。 - **应用场景**: 适用于需要了解官方公布的票价信息的情况。 #### 七、电子客票出票/废票 - **定义**: 电子客票的出票是指将预订转换为正式的...

    vim常用命令

    - **`:ranges /pat1 /pat2 /g`**: 用`newtext`替换`oldtext`。 - **`:m,n s/oldtext/newtext`**: 在第`m`行到第`n`行之间,用`newtext`替换`oldtext`。 - **`&`**: 重复上一个`:s`命令。 - **`:g/text/s/text2/text3...

    cisco_Packet_Tracer_5使用教程

    - **配置PAT**: 使用`ip nat inside source`命令配置PAT。 #### 十五、ACL简单的配置 - **配置ACL**: 使用`access-list`命令配置访问控制列表。 #### 十六、DHCP中继配置 - **配置DHCP中继**: 使用`ip helper-...

    CCNA 640-802课程讲义

    - **类型**: 静态NAT、动态NAT、PAT (Port Address Translation)等。 - **应用场景**: 外部访问内部服务器、多台内部主机共享单一公网IP等。 以上是对CCNA 640-802课程讲义中涉及的主要知识点的概述,这些知识点...

Global site tag (gtag.js) - Google Analytics