当前位置:网站首页>PAT甲级 1014 排队等候(队列大模拟+格式化时间)
PAT甲级 1014 排队等候(队列大模拟+格式化时间)
2022-08-10 14:22:00 【键盘奏鸣曲】
假设一家银行有 N 个服务窗口。
窗户前面有一条黄线,将等候区分为两部分。
客户排队等候的规则是:
在黄线以内的区域,每个窗口前都可以排一队人,每队最多可以排 M 个人,当 N 个窗口前的队伍都排满时,第 NM+1 个顾客以及以后的顾客只能在黄线以外的区域等候。黄线外的所有客户统一排成一个长队。
每当客户进入黄线以内时,他会选择到当前排队人数最少的窗口处排队等待办理业务。当多个窗口前排队人数最少时,客户会选择窗口编号更小的窗口处排队等待办理业务。
第 i 名客户的办理业务时长为 Ti。
最开始的 N 名客户将于早上 08:00 被受理业务。
现在,给定所有客户办理业务所需的时间,并对你进行若干次询问,每次询问一名客户办理完自身业务时的确切时间。例如,假设银行共有 2 个服务窗口,每个窗口内可以有两名客户排在黄线以内。
现在共有 5 名客户等待办理业务,他们的业务时长分别为 1,2,6,4,3 分钟。
早上 08:00 时,客户 1 在窗口 1 接受服务,客户 2 在窗口 2 接受服务,客户 3 在窗口 1 前等待,客户 4 在窗口 2 前等待,客户 5 在黄线以外等待。
在 08:01,客户 1 办完业务,客户 5 进入黄线以内,并于窗口 1 前等待。
客户 2 将于 08:02 办完业务,客户 4 将于 08:06 办完业务,客户 3 将于 08:07 办完业务,客户 5 将于 08:10 办完业务。
输入格式
第一行包含 4 个整数,N,M,K,Q,分别表示窗口总数,黄线内每个队伍的最大长度,客户总数,询问次数。第二行包含 K 个整数,表示每个客户办理业务的所需时长(单位:分钟)。
第三行包含 Q 个整数,表示询问的所有客户的编号。
客户编号从 1 到 K。
输出格式
对于每个询问的客户,输出其办理完业务的确切时间,格式为 HH:MM。注意,银行 17:00 就会停止受理新的业务,所以对于不能在 17:00 之前(即最晚可以开始服务的时间是16:59)开始办理业务的客户,要输出 Sorry。
数据范围
1≤N≤20,
1≤M≤10,
1≤K≤1000,
1≤Q≤K
输入样例:
2 2 7 5
1 2 6 4 3 534 2
3 4 5 6 7
输出样例:
08:07
08:06
08:10
17:00
Sorry
我的解法:
#include <bits/stdc++.h>
using namespace std;
const int N = 40;
queue <int> q[N];
int n, m, k, Q;
int sum[N];
int main(){
cin >> n >> m >> k >> Q;
unordered_map<int, int> hash;
for(int i = 1; i <= k; i ++ ){
int x;
cin >> x;
int t = 0;
for(int j = 0; j < n; j ++ ){
if(i <= n * m){
if(q[j].size() < q[t].size()) t = j;
}
else{
if(q[j].front() < q[t].front()) t = j;
}
}
sum[t] += x;
if(i > n * m) q[t].pop();
q[t].push(sum[t]);
if(sum[t] - x < 540) hash[i] = sum[t];
}
while(Q -- ){
int i;
cin >> i;
if(hash.count(i)) printf("%02d:%02d\n", hash[i]/60 + 8, hash[i]%60);
else puts("Sorry");
}
return 0;
}
收获:
队列数组模拟排队流程+hash表快速查找结果
格式化打印时间 printf("%02d:%02d\n", hash[i]/60 + 8, hash[i]%60);
边栏推荐
- 符合信创要求的堡垒机有哪些?支持哪些系统?
- 池化技术有多牛?来,告诉你阿里的Druid为啥如此牛逼!
- 数据产品经理那点事儿 二
- [JS Advanced] Creating sub-objects and replacing this_10 in ES5 standard specification
- How is the monthly salary table stored in the database?Ask for a design idea
- tensorflow安装踩坑总结
- leetcode 739. Daily Temperatures Daily Temperatures (Moderate)
- laravel throws the error to Dingding
- Lack of comparators, op amps come to the rescue!(Op amp is recorded as a comparator circuit)
- PyTorch 多机多卡训练:DDP 实战与技巧
猜你喜欢
Classifying irises using decision trees
统信 UOS V20 专业版(1050update2)发布:文件共享、全局搜索等优化
符合信创要求的堡垒机有哪些?支持哪些系统?
Using data intelligence, Amazon cloud technology helps companies build endogenous brand growth
八大排序总是忘?快来这里~
借数据智能,亚马逊云科技助力企业打造品牌内生增长力
[JS Advanced] Creating sub-objects and replacing this_10 in ES5 standard specification
Analysys and the Alliance of Small and Medium Banks jointly released the Hainan Digital Economy Index, so stay tuned!
中学数学建模书籍及相关的视频等(2022.08.09)
awk的简单使用
随机推荐
易观分析联合中小银行联盟发布海南数字经济指数,敬请期待!
Second half of 2011 System Architect Afternoon Paper II
Data product manager thing 2
雨水中存在的PFAS化学物质对饮用水安全构成了威胁
Summary of Force Buckle Solution 640 - Solving Equations
开源SPL消灭数以万计的数据库中间表
数据产品经理那点事儿 一
第五讲 测试技术与用例设计
epoll学习:思考一种高性能的服务器处理框架
使用决策树对鸢尾花进行分类
符合信创要求的堡垒机有哪些?支持哪些系统?
EVE模拟器的使用-带图超详细(学网络用)「建议收藏」
高数_证明_曲率公式
一种能让大型数据聚类快2000倍的方法,真不戳
发送post请求前台无法获取数据
2022-08-10日报: Swin Transformer作者曹越加入智源,开展视觉基础模型研究
黑客入门,从HTB开始
面试面到了一个腾讯30k出来的,有见识到何为精通MySQL调优
Stream通过findFirst()查找满足条件的一条数据
简单的写一个防抖跟节流