//1014. Waiting in Line (30)
/*
解题思路:
对每个要加入队列的人进行以下两类考虑:
1)找到长度最短的队列,将当前考虑的元素加入进去。
2)如果队列长度都已经满的情况下,找到最先出来的元素,pop出来,然后将新的元素push进去。
特点:
排队题基本不需要考虑超时;
*/
/*
有三个case的测试点是:
注意条件是要在17:00之前serve的都可以,比如说某顾客从16:00-18:00结束,那么输出结果为18:00而不是Sorry。
*/
//accepted
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int N, M, K, Q;
scanf("%d%d%d%d", &N,&M,&K,&Q);
int time[1005];
queue<int> que[25];
int result[1005];
int i;
for (i = 1;i<=K;i++)
{
scanf("%d", &time[i]);
}
int QueryNum = 0;
//count
int curr = 1;
que[0].push(curr);
result[curr] = time[1];
curr++;
int j;
int MinLen = M;
int MinIndex = -1;
int BeginTime[25];
int MinTime = 700;
int MinTimeIndex = -1;
fill(BeginTime, BeginTime+N+1, 0);
BeginTime[0] = time[1];
int k;
while (curr <= K)
{
MinIndex = -1;
MinLen = K;
MinTimeIndex = -1;
MinTime = 700;
//找到数组长度最小的
for (j=0;j<N;j++)
{
if (que[j].size() < MinLen )
{
MinLen = que[j].size();
MinIndex = j;
}
}
if (MinLen == N)
{
//找到最早可以结束的加入进去
for (j = 0;j<N;j++)
{
int tmp = que[j].front();
if (result[tmp] < MinTime)
{
MinTime = result[tmp];
MinTimeIndex = j;
}
}
if (MinTimeIndex == -1)
{
for (k = curr;k<=K;k++)
{
result[curr] = 541;
}
break;
}
que[MinTimeIndex].pop();
que[MinTimeIndex].push(curr);
result[curr] = BeginTime[MinTimeIndex] + time[curr];
BeginTime[MinTimeIndex] = result[curr];
}
else
{
que[MinIndex].push(curr);
result[curr] = BeginTime[MinIndex] + time[curr];
BeginTime[MinIndex] = result[curr];
}
curr++;
}
for (i = 0;i<Q;i++)
{
scanf("%d", &QueryNum);
int r = result[QueryNum];
if (r > 540)
{
if (r - time[QueryNum] < 540)
{
printf("%02d:%02d\n", r/60+8, r%60);
}
else
printf("Sorry\n");
}
else
{
printf("%02d:%02d\n", r/60+8, r%60);
}
}
return 0;
}
相关推荐
Robust MPC 4 (鲁棒&随机 MPC)
Robust MPC
1014 Waiting in Line 详解 38行代码AC 测试点
每个顾客都想找当前最短队列排队,且入黄线后就不能换队,那么每次就为顾客找到当前空余的最短队列入队,同时总人数hc++,当hc==n*m时就代表所有队列人数已满,而按题意和生活经验都是最早完成的顾客出队,那就找所有窗口队头最早完成的出队,同时hc--。最关键的是记录每个顾客的完成时间,当要查询时可以直接找到对应的输出。题目中每位顾客的完成时间都是前者的完成时间加上自己的处理时间而与其他无关,就用now数组记录每个窗口当前的完成时间,每完成一个顾客就用他的完成时间覆盖,这样就可避免重复计算。...
硬件笔记——HDMI接口
HDMI可以同时传输视频信号、音频信号和控制信号。其中高速信号有四组:从Data TX到Data RX有3组差分数据信号(TMDS_DATA0~2)和一组差分时钟信号(TMDS_CLOCK)。以及若干低速线。脚编号信号名称信号类型功能说明1热插拔检测连接状态检测。接收端通过此引脚向源端发送高电平信号,通知其已连接并可以开始读取EDID。2UTILITY车载用途悬空3TMDS数据通道2差分信号正极,用于传输视频像素、音频和数据包。4TMDS数据2屏蔽。
1014. Waiting in Line (30)
一两个测试点过不了真是揪心!! 1014. Waiting in Line (30) https://www.patest.cn/contests/pat-a-practise/1014 起先我按照思路,根据时间流程,每过一分钟,取出每个窗口第一个人,使他的输出时间+1,剩余服务时间-1,判断他的剩余服务时间,剩余服务时间如若等于0,用户出队,随后,判断大队列中的人数大于
基于单片机负载控制的无人机电气设备监测系统设计
为深入分析无人机电气设备的电子负载性能,实现对传输电子量的合理性监管与控制,设计基于单片机负载控制的无人机电气设备监测系统;利用电气信号发生电路,构建负载网络控制器与以太网模块运行所需的电气设备负载环境,借助PCB监控板建立PLC扩展负载模块与核心监控主机之间的物理连接关系,实现无人机电气设备监测系统的硬件执行环境搭建;在此基础上,通过STM32型单片机移植协议,确定无人机电气设备通信主机的现有组态形式,联合已设定的监控任务有线级条件,实现监测系统的软件执行环境搭建,完成基于单片机负载控制的无人机电气设备监
C语言实现TCP聊天室:Socket编程与并发模型实战解析
网络编程是构建分布式系统的核心技术,其核心在于理解进程间通信的底层机制。TCP/IP协议栈提供了可靠的字节流传输服务,通过Socket API这一抽象接口,开发者可以在应用层建立连接、收发数据。为了高效处理多个并发连接,服务器需要采用多线程或I/O复用模型,前者为每个连接创建独立线程,逻辑清晰但资源消耗大;后者通过select、poll或epoll等系统调用监控多个文件描述符,显著提升并发能力。这些技术是构建高性能网络服务(如即时通讯、在线游戏服务器)的基础。本文以C语言实现一个简洁的TCP聊天室为例,详细
**甲级PAT1014 Waiting in Line (已经通过全部测试,找到一个奇怪的坑但是不知道为什么,跪求大佬回复)
1014 Waiting in Line (30)(30 分) Suppose a bank has N windows open for service. There is a yellow line in front of the windows which devides the waiting area into two parts. The rules for the customer...
基于网关实现不同网段S7-1200 CPU的通信方法
在A网段的计算机上ping B网段的计算机:在A网段的计算机上使用ping命令,向B网段的计算机发送数据包。在B网段的计算机上ping A网段的计算机:同样地,在B网段的计算机上使用ping命令,向A网段的计算机发送数据包。数据包也会经过路由器进行转发,最终到达A网段的计算机。配置路由器:在路由器上配置两个网段的IP地址和子网掩码,并设置路由表,使得路由器可以将A网段和B网段之间的数据进行转发。确定两个网络之间的路由器:假设需要将A网段和B网段进行通信,需要在A、B两个网段之间设置一台路由器。
PAT 1014 Waiting in Line(模拟+队列操作)
题目https://www.patest.cn/contests/pat-a-practise/1014 银行前台处理客户的过程如下,有n个窗口,每个窗口前的队伍可以排m个人,其余人在黄线外等待;每当有人处理完毕时,黄线外的人找最短的、序号最小队伍插入;求每个人的结束时间。 解题思路本题是明显的队列的模拟题,遗憾的是改了好久代码只过了四组,最后一组依然是段错误,虽然还不知道什么原因:(,看了一下
基础入门篇 | YOLOv8 项目【训练】【验证】【推理】最简单教程 | YOLOv8必看 | 最新更新,直接打印 FPS,mAP50,75,95
三个文件搞定YOLOv8【训练】【验证】【推理】🚀🚀🚀
YOLOv11改进策略【模型轻量化】| 替换骨干网络为 MobileViTv1高效的信息编码与融合模块,获取局部和全局信息
本文记录的是基于MobileNet V4的YOLOv11目标检测轻量化改进方法研究。其中MobileViT块旨在以较少的参数对输入张量中的进行建模,结合卷积与 Transformer 的优势,并实现有效的信息编码与融合本文配置了原论文中和三种模型,以满足不同的需求。
pat1014Waiting in Line (30)
题意分析: (1)本题模拟银行排队,逻辑上不难,操作起来有点麻烦。银行来了K个客户,银行有N个窗口,每个窗口前有M个位置排队,客户选择最短的队伍排,根据每个客户的序号和服务时间来确定最后客户离开银行的时间。 (2)属于队列的问题,但实际上可以将问题简化:因为每个客户的服务时间是固定的,假设前N*M个客户达到之后排好位置后,他们的离开时间也就确定好了,即每个窗口本次服务结束的时间也就确定了,比如
WPF+MVVM案例实战(二十三)- 阴影效果详解
通过附加属性实现阴影效果,通过改变不同的阴影属性值达到不同阴影效果
PAT甲级1014 Waiting in Line (30分)
PAT甲级1014 Waiting in Line (30分) 题目: AC代码: #include <iostream> #include <queue> #include <vector> using namespace std; struct node { int poptime, endtime; queue<int> q;...
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
pscad IEEE标准系统搭建说明
pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。
[PAT-Advanced] A1014 Waiting in Line (30)
文章目录A1014 Waiting in Line (30分)Input Specification:Output Specification:Sample Input:Sample Output:CodeAnalysis 作者: CHEN, Yue 单位: 浙江大学 时间限制: 400 ms 内存限制: 64 MB 代码长度限制: 16 KB A1014 Waiting in Line (30分...
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
PAT 1014 Waiting in Line (30 分)
PAT 1014 Waiting in Line (30 分) 排队论
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
PAT 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 front of the windows which devides the waiting area into two parts. The rules for the customers to ...
PAT 1014 Waiting in Line (30)
1014 Waiting in Line (30)(30 分)Suppose a bank has N windows open for service. There is a yellow line in front of the windows which devides the waiting area into two parts. The rules for the customers ...
[PAT 甲级] 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 front of the windows which devides the waiting area into two parts. The rules for the custome...
Day51: [PAT甲级] 1014 Waiting in Line (30分)
Day51: [PAT甲级] 1014 Waiting in Line (30分) 题源: 来自PAT真题库: https://pintia.cn/problem-sets/994805342720868352/problems/994805498207911936 代码: dirty code凑合看吧 #include<iostream> #include<string>...
PAT1014. Waiting in Line (30)
题目如下: Suppose a bank has N windows open for service. There is a yellow line in front of the windows which devides the waiting area into two parts. The rules for the customers to wait in line are:
PAT甲级 - 1014 Waiting in Line (30 分)
题目链接: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 devides the waiting area into two parts. The rules for the...
PAT甲级 1014 Waiting in Line (30分)
1014 Waiting in Line (30分) 题目链接:PAT A 1014 思路分析:这道题有点难,属于稍复杂的模拟题。这种题可能涉及不到什么具体的算法,也没有什么模板可以使用,所以只能是根据题意来构建程序。题目中的关键点是黄线,银行八点上班后,等候的顾客依次被分配到每一个窗口,然后根据黄线内的容量决定有多少顾客可以进入黄线内等候。当一个人服务结束,也就是说黄线内有剩余容量的时候,黄...
PAT真题练习(甲级)1014 Waiting in Line (30 分)
PAT真题练习(甲级)1014 Waiting in Line (30 分) Sample Input: 2 2 7 5 1 2 6 4 3 534 2 3 4 5 6 7 Sample Output: 08:07 08:06 08:10 17:00 Sorry #include<iostream> #include <string> #include <...
PAT甲级1014 Waiting in Line (30 分)
1014Waiting in Line(30分) Suppose a bank hasNwindows open for service. There is a yellow line in front of the windows which devides the waiting area into two parts. The rules for the customers to...
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 front of the windows which devides the waiting area into two parts. The rules for the customers to wai
2736



被折叠的 条评论
为什么被折叠?



