题面:

输入四个正整数N,M,K,Q(N<=20,M<=10,K,Q<=1000),N为银行窗口数量,M为黄线内最大人数,K为需要服务的人数,Q为查询次数。输入K个正整数,分别代表每位顾客需要被服务的时间,Q次查询每次查询一位顾客被服务完离开银行的时间。如果他在五点以前(不包括五点)没有开始被服务,输出“Sorry”。

trick:

在五点以前(不包括五点)没有开始被服务,输出“Sorry”,而不是被服务完时间在五点以后(以题面为准)。

AAAAAccepted code:

 #include<bits/stdc++.h>
using namespace std;
int a[];
queue<pair<int,int> >qu[];
int ans[];
int quy[];
int sum[];
int main(){
int n,m,k,q;
cin>>n>>m>>k>>q;
for(int i=;i<=k;++i)
cin>>a[i];
for(int i=;i<=q;++i)
cin>>quy[i];
for(int i=;i<=m;++i)
for(int j=;j<=n;++j)
if((i-)*n+j<=k)
qu[j].push({a[(i-)*n+j],(i-)*n+j});
int flag=m*n+;
while(){
int mn=1e9;
for(int i=;i<=n;++i)
if(!qu[i].empty()&&qu[i].front().first+sum[i]<mn)
mn=qu[i].front().first+sum[i];
if(mn==1e9)
break;
for(int i=;i<=n;++i)
if(!qu[i].empty()&&qu[i].front().first+sum[i]==mn){
if(sum[i]>=)
ans[qu[i].front().second]=-;
else{
sum[i]=mn;
ans[qu[i].front().second]=sum[i];
}
qu[i].pop();
if(flag<=k){
qu[i].push({a[flag],flag});
flag++;
}
}
}
for(int i=;i<=q;++i){
int hour=ans[quy[i]]/+;
int minute=ans[quy[i]]%;
if(ans[quy[i]]==-)
cout<<"Sorry";
else{
if(hour<)
cout<<""<<hour<<":";
else
cout<<hour<<":";
if(minute<)
cout<<""<<minute;
else
cout<<minute;
}
cout<<"\n";
}
return ;
}

【PAT甲级】1014 Waiting in Line (30 分)(队列维护)的更多相关文章

  1. PAT 甲级 1014 Waiting in Line (30 分)(queue的使用,模拟题,有个大坑)

    1014 Waiting in Line (30 分)   Suppose a bank has N windows open for service. There is a yellow line ...

  2. PAT A 1014. Waiting in Line (30)【队列模拟】

    题目:https://www.patest.cn/contests/pat-a-practise/1014 思路: 直接模拟类的题. 线内的各个窗口各为一个队,线外的为一个,按时间模拟出队.入队. 注 ...

  3. PAT甲级1014. Waiting in Line

    PAT甲级1014. Waiting in Line 题意: 假设银行有N个窗口可以开放服务.窗前有一条黄线,将等候区分为两部分.客户要排队的规则是: 每个窗口前面的黄线内的空间足以包含与M个客户的一 ...

  4. 1014 Waiting in Line (30分)

    1014 Waiting in Line (30分)   Suppose a bank has N windows open for service. There is a yellow line i ...

  5. PAT 1014 Waiting in Line (30分) 一个简单的思路

    这题写了有一点时间,最开始想着优化一下时间,用优先队列去做,但是发现有锅,因为忽略了队的长度. 然后思考过后,觉得用时间线来模拟最好做,先把窗口前的队列填满,这样保证了队列的长度是统一的,这样的话如果 ...

  6. 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 ...

  7. PTA 1014 Waiting in Line (30分) 解题思路及满分代码

    题目 Suppose a bank has N windows open for service. There is a yellow line in front of the windows whi ...

  8. PAT甲级——1131 Subway Map (30 分)

    可以转到我的CSDN查看同样的文章https://blog.csdn.net/weixin_44385565/article/details/89003683 1131 Subway Map (30  ...

  9. PAT 甲级 1076 Forwards on Weibo (30分)(bfs较简单)

    1076 Forwards on Weibo (30分)   Weibo is known as the Chinese version of Twitter. One user on Weibo m ...

随机推荐

  1. winform datagridview 同步滚动

    //首先添加 Scroll事件//同步滚动 private void dgYY_Scroll(object sender, ScrollEventArgs e) { ) { dgFee.FirstDi ...

  2. [C++]蛇形填数

    [从左下角开始,逆时针蛇形填数] #include <iostream> using namespace std; int main() { int n; cin>>n; in ...

  3. 吴裕雄 python 人工智能——基于Mask_RCNN目标检测(1)

    import os import sys import random import math import numpy as np import skimage.io import matplotli ...

  4. 数据库单,多,全库、冷热备份思路及备份与还原(mysqldump)

    热备份:服务开启状态下进行备份, 冷备份:服务关闭状态进行备份, 冷备份 数据库原有内容如下: MariaDB [(none)]> show databases;+--------------- ...

  5. Navicat连接两个不同机子上的mysql数据库,端口用换吗?--不用

    经过了上一篇的努力,成功的连上了远程的mysql数据库 dos 命令行下的成功连接 在用Navicat连接的时候要注意: 端口仍然是3306,而不用去更改,并不会和上面的本机的Mysql连接使用的端口 ...

  6. C# 集合类型学习

    如果你掌握了一门语言的数据结构 ,那么你离掌握这门语言 也不远了 1.列表 对于list,值得一提的是 Capacity 属性,使用默认的构造函数 ,让我们用代码来说明 var intList = n ...

  7. js中substr、substring、indexOf、lastIndexOf的用法

    substr substr(start,length)表示从start位置开始,截取length长度的字符串 var str="imgs/header_2.jpg"; consol ...

  8. GIT 协同开发

    Git 是一个开源的分布式版本控制系统,用于敏捷高效的处理任何项目的版本问题.Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件.与cvs, ...

  9. 安洵杯iamthinking(tp6反序列化链)

    安洵杯iamthinking tp6pop链 考点: 1.tp6.0反序列化链 2.parse_url()绕过 利用链: 前半部分利用链(tp6.0) think\Model --> __des ...

  10. C:C语言中表示进制数

    #include <stdio.h> int main() { int a = 123; //十进制方式赋值 int b = 0123; //八进制方式赋值, 以数字0开头 int c = ...