【PAT甲级题解记录】1014 Waiting in Line (30 分)
【PAT甲级题解记录】1014 Waiting in Line (30 分)
前言
Problem:1014 Waiting in Line (30 分)
Tags:模拟 双端队列
Difficulty:
剧情模式想流点汗想流点血死而无憾Address:1014 Waiting in Line (30 分)
问题描述
银行有N个业务窗口,每个窗口可以排队M人,如果有多的人就在外面等,8点开始K个人按照输入顺序去办理业务,当外面等的人能进去排队时优先选择人少的队伍,如果一样就优先选择序号靠前的窗口。现在给定所有人的业务需要的时间,求每个人按照这个规则办完业务的时间。(只接受17点前开始办理的业务,坑点在于17点前办理的业务结束时间可能超过17点,所以输出时不能只判断结束时间还应考虑开始时间)
解题思路
- 除了有一个坑点外这道题还是一道并不特别复杂的模拟题,由于是排队自然能想到利用队列去解决,这里可以使用双端队列方便队伍头部的处理。
- 思路是按照题目意思先初始化所有队列,包括N个双端队列(窗口排队队列)和一个在外面等的队列;
- 每次循环都从N个队列的队头中确定出还需办理业务的最短时间,在这一次循环里,等于这个最短时间的所有队头客户都能解决业务,这些客户直接保存好时间后出队;
- 剩余的队头客户则把各自剩余的办理时间减去前面求出来的最短时间,即更新正在办理业务的客户的剩余时间。
- 一次循环结束后检查外队列,不为空则按照题目规则入窗口排队队列。
- 由于输出时需要知道每一个客户的编号,所以队列元素不仅仅是 “int” ,而应该是一个 “pair<int,int>”。
- 输出时需要判断开始时间是否超时,需要我们输入时根据客户编号存放业务时间,每个客户的业务结束时间减去这个时间就是开始时间。
参考代码
/** @Author: Retr0.Wu * @Date: 2022-02-16 15:08:36 * @Last Modified by: Retr0.Wu* @Last Modified time: 2022-02-16 20:35:23*/
#include <bits/stdc++.h>
using namespace std;
int main()
{int N, M, K, Q;cin >> N >> M >> K >> Q;deque<pair<int, int> > deq[21];queue<pair<int, int> > que;vector<int> time(K, 0);vector<int> time_len(K, 0);for (int i = 0; i < K; i++){int ktime;cin >> ktime;time_len[i] = ktime;if (i < N * M){deq[i % N].push_back(make_pair(i, ktime));}else{que.push(make_pair(i, ktime));}}int sumtime = 0;for (int i = 0; i < K; i++) // 至多K次,可能更少{int minn = 0x3f3f3f3f;for (int j = 0; j < N; j++){ // 遍历每一个柜台if (deq[j].empty())continue;int last = deq[j].front().second;minn = min(last, minn);}sumtime += minn; // 别忘了更新已流逝的时间for (int j = 0; j < N; j++){if (deq[j].empty())continue;int last = deq[j].front().second;int id = deq[j].front().first;last -= minn; // 该客户剩余业务时间if (last == 0) // 该客户业务可以在此次遍历完成{time[id] = sumtime; // 该客户业务完成deq[j].pop_front();if (!que.empty()){deq[j].push_back(que.front());que.pop();}}else // 该客户业务不可以在此次遍历完成{deq[j].pop_front();deq[j].push_front(make_pair(id, last));}}}// for(int i=0;i<K;i++){// cout<<i+1<<" : "<<time[i]<<endl;// }for (int i = 0; i < Q; i++){int id;cin >> id;if (time[id - 1] - time_len[id - 1] >= 540){cout << "Sorry" << endl;}else{printf("%02d:%02d\n", 8 + time[id - 1] / 60, time[id - 1] % 60);}}return 0;
}
总结
queue deque stack 等基础数据结构需要熟悉,模拟题一般都用的上。
相关文章:
【PAT甲级题解记录】1014 Waiting in Line (30 分)
【PAT甲级题解记录】1014 Waiting in Line (30 分) 前言 Problem:1014 Waiting in Line (30 分) Tags:模拟 双端队列 Difficulty:剧情模式 想流点汗 想流点血 死而无憾 Address:1014 Waiting in Line (30 分) 问题描述 银行有N个…...
web接入大华摄像头实时视频
目录 一、FFmpeg下载及配置 二、nginx下载及配置 三、摄像rtsp取流 四、ffmpeg推流 五、html前端工作 一、FFmpeg下载及配置 地址:Download FFmpeg 下载并解压FFmpeg文件夹,配置环境变量:在“Path”变量原有变量值内容…...
Git代码冲突-不同分支之间的代码冲突
1、解决思路在团队开发中,提交代码到Git仓库时经常会遇到代码冲突的问题。- 原因:多人对相同的文件进行了编辑,造成代码存在差异化- 解决方案:1. 使用工具或git命令对比不同分支代码的差异化2. 把不同分支中有效代码进行保留&…...
KUKA KR C4机器人与S7-1200PLC进行PROFINET通信的具体方法和步骤
KUKA KR C4机器人与S7-1200PLC进行PROFINET通信的具体方法和步骤 首先,从KUKA机器人控制柜中将KOP备选软件包拷贝出来,然后在“WorkVisual Development Environment”安装KUKA备选软件包(版本非常重要,尽量从控制柜中拷贝), 也可以从以下链接中获取: KUKA机器人PROFINET…...
从0到1一步一步玩转openEuler--24 openEuler管理进程-调度启动进程
文章目录24 openEuler管理进程-调度启动进程24.1 定时运行一批程序(at)24.1.1 at命令24.1.2 设置时间24.1.3 执行权限24.2 周期性运行一批程序(cron)24.2.1 运行机制24.2.2 crontab命令24.2.3 crontab文件24.2.4 编辑配置文件操作…...
Servlet笔记(10):Session跟踪
Servlet Session 跟踪 Http是一种“无状态”协议,所以需要保存session会话,维持Web服务器连接。 Cookies 一个Web服务器可以分配一个唯一的session会话ID存储至Web客户端的cookie中,对于客户端的后续请求可以使用接收到的cookie来识别。 但是…...
Hive---分区表和分桶表
分区表和分桶表 文章目录分区表和分桶表分区表语法加载数据增加分区删除分区查看分区表有多少分区查看分区表结构动态分区开启动态分区功能(默认 true,开启)设置为非严格模式在所有执行 MR 的节点上,最大一共可以创建多少个动态分…...
C++ STL
1. 什么是STLSTL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。通俗来说:将常见的数据结构(顺序表、链表、栈、队列、堆。。。…...
java程序员要了解的sql语句优化技巧大全
sql语句规范 MySQL在Linux系统下数据库名,表名,存储过程名,函数名称,触发器名称等区分大小写,列名不区分大小写,原因是这些操作系统下文件名称区分大小写。 MySQL在Windows系统下全部不区分大小写…...
SQL零基础入门学习(十)
SQL零基础入门学习(九) SQL CREATE DATABASE 语句 CREATE DATABASE 语句用于创建数据库。 SQL CREATE DATABASE 语法 CREATE DATABASE dbname;SQL CREATE DATABASE 实例 下面的 SQL 语句创建一个名为 “my_db” 的数据库: CREATE DATAB…...
Pytorch从零开始训练模型【识别数字模型】并测试
1 准备数据集 import torch import torchvision # 去网上下载CIFAR10数据集【此数据集为经典的图像数字识别数据集】 # train True 代表取其中得训练数据集; # transform 参数代表将图像转换为Tensor形式 # download 为True时会去网上下载数据集到指定路径【root】…...
Leetcode DAY 44: 完全背包 and 零钱兑换 II and 组合总和 Ⅳ
完全背包518. 零钱兑换 II!!!程序未通过原因: 1、dp数组的初始化没考虑清楚 2、组合问题 dp数组的更新没考虑清楚 修改后: class Solution { public:int change(int amount, vector<int>& coins) {// dp[j…...
谷歌搜索留痕的技术公式【2023年新版】
本文主要分享谷歌搜索留痕的技术公式,让你更简单的去学习谷歌留痕的技术原理 本文由光算创作,有可能会被修改和剽窃,我们佛系对待这样的行为吧。 谷歌搜索留痕的技术公式是什么? 答案是:需要做排名的关键词海量能搜…...
2023财年Q4业绩继续下滑,ChatGPT能驱动英伟达重回巅峰吗?
近年来,全球科创风口不断变换,虚拟货币、元宇宙等轮番登场,不少企业匆忙上台又很快谢幕,但在此期间,有些企业扮演淘金潮中“卖水人”的角色,却也能够见证历史且屹立不倒。不过,这并不意味着其可…...
博客管理系统--项目说明
项目体验地址(账号:123,密码:123)http://120.53.20.213:8080/blog_system/login.html项目码云Gitee地址:https://gitee.com/GoodManSS/project/tree/master/blog_system(一)准备工作…...
一文带你了解MySQL的Server层和引擎层是如何交互的?
对于很多开发小伙伴来说,每天写SQL是必不可少的一项工作。 那不知道大家有没有深入了解过,当我们的一条SQL命令被执行时,MySQL是如何把数据从硬盘/内存中查出来并展示到用户面前的呢? 其实,MySQL也没有大家想象的那么…...
CVNLP 常用数据集语料库资源汇总
深度学习常用数据集汇总CVClassificationNLPSentiment AnalysisText ClassificationDialogue Generation其他AudioMulti-ModalClassificationSearch & MatchingImage CaptioningVisualQATri-Modal其他CV ghcnclimate_sphereModelNet40Shrec17 data labelcosmo Spherica…...
lisp 表达式求值规则
lisp 表达式求值规则 一个要求值的 lisp 对象被称为lisp表达式(form)。 lisp 表达式分三种 1. 自求值表达式。前面说过数字、字符串、向量都是自求值表达式。还有两个特殊的符号 t 和 nil 也可以看成是自求值表达式。 2. 符号表达式。符号的求值…...
Sophos Firewall OS (SFOS) 19.5 MR1 - 同步下一代防火墙
Sophos Firewall OS (SFOS) 19.5 MR1 - 同步下一代防火墙 请访问原文链接:https://sysin.org/blog/sfos-19-5/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org Sophos Firewall v19.5 现已推出 Sophos Firewall…...
为什么很多人转行IT考虑后端开发Java?
顺应互联网时代发展的选择 在计算机广泛运用于社会的各个角落的今天,选择学习一门计算机语言真的很不错,它会让你的生活从此与众不同。软件渗透到组织的运营和管理的后台之中,形成了组织运营支撑平台。这种形态是传统软件的重要应用场景。在…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
