当前位置: 首页 > news >正文

1017 Queueing at Bank

链接:

1017 Queueing at Bank - PAT (Advanced Level) Practice (pintia.cn)

题目大意:

有n个客户,k个窗口。已知每个客户的到达时间和需要的时长,如果有窗口就依次过去,如果没有窗口就在黄线外等候(黄线外只有一个队伍,先来先服务),求客户的平均等待时长

  • N 位顾客,每位顾客有一个到达时间和处理时间。
  • 银行营业时间为 08:00:0017:00:00,顾客到达时间早于 08:00:00 需要等到银行开门,晚于 17:00:01 的顾客不会被服务。
  • 需要计算的是所有顾客的平均等待时间,等待时间是从顾客到达时算起,直到他被某个窗口接待开始为止。
  • 顾客在窗口处理时长不能超过1小时。

处理逻辑:

1. 输入数据与时间转换

首先,代码从输入中读取客户的到达时间和服务时间,并将这些信息保存为一个结构体数组 p[]。客户的到达时间(come)会被转换为秒数,以便更方便地处理时间比较和计算。服务时间(t)是以分钟为单位的,会转换为秒数。

2. 排序顾客

在所有输入数据处理完之后,代码对有效的顾客按照到达时间进行排序。这样做的目的是确保顾客按照先到先服务的顺序进行处理。

3. 初始化窗口的空闲时间

银行有 k 个窗口,初始时所有窗口都从 08:00:00 开始可以提供服务,这个时间被转换为秒数 28800 秒。使用一个小顶堆(priority_queue)来存储每个窗口的空闲时间,即每个窗口何时会变得空闲,以便下一个顾客可以开始服务。

4. 处理每位顾客的等待时间

对于每一位顾客,代码通过比较顾客到达时间与最早空闲的窗口时间,来决定顾客是否需要等待如果窗口空闲时间早于或等于顾客到达时间,顾客可以直接服务;否则,顾客需要等待,等待时间是窗口的空闲时间减去顾客到达时间。

无论顾客是否等待,窗口的空闲时间都会更新为顾客服务结束后的时间,即 max(pq.top(), p[i].come) + p[i].t,表示窗口在顾客服务结束后变得空闲。

5. 计算平均等待时间

最后,代码计算所有顾客的总等待时间,并输出平均等待时间(单位是分钟,保留 1 位小数)。如果没有有效顾客,则输出 0.0

代码: 

#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 10;typedef struct{int come, t;  // come: 顾客到达时间(秒),t: 处理时间(秒)
} node;int cnt;
node p[N];  // 存储有效的顾客信息bool cmp(node a, node b) {return a.come < b.come;  // 按到达时间升序排序
}priority_queue<int, vector<int>, greater<int>> pq;  // 小顶堆,表示窗口的空闲时间int main() {int n, k;scanf("%d%d", &n, &k);for (int i = 0; i < n; i++) {int hh, mm, ss, tt;scanf("%d:%d:%d %d", &hh, &mm, &ss, &tt);int t = hh * 3600 + mm * 60 + ss;  // 将时间转换为秒if (t > 61200) continue;  // 过滤掉 17:00:01 之后的顾客p[cnt].come = t;  // 存储顾客的到达时间p[cnt].t = tt * 60;  // 处理时间(分钟转换为秒)cnt++;}// 对有效顾客按到达时间排序sort(p, p + cnt, cmp);int wait = 0;  // 总等待时间for (int i = 0; i < k; i++) pq.push(28800);  // 所有窗口初始为空闲,从 08:00:00 开始for (int i = 0; i < cnt; i++) {if (pq.top() > p[i].come) {  // 如果窗口的最早空闲时间大于顾客到达时间wait += pq.top() - p[i].come;  // 顾客需要等待}// 更新窗口的空闲时间pq.push(max(pq.top(), p[i].come) + p[i].t);  // 顾客服务结束后的时间入堆pq.pop();  // 弹出已经处理完的窗口}// 输出平均等待时间,单位为分钟,保留 1 位小数if (cnt == 0) {printf("0.0\n");} else {printf("%.1lf\n", (double)wait / 60.0 / (double)cnt);}return 0;
}

相关文章:

1017 Queueing at Bank

链接&#xff1a; 1017 Queueing at Bank - PAT (Advanced Level) Practice (pintia.cn) 题目大意&#xff1a; 有n个客户&#xff0c;k个窗口。已知每个客户的到达时间和需要的时长&#xff0c;如果有窗口就依次过去&#xff0c;如果没有窗口就在黄线外等候&#xff08;黄线…...

DPDK 测试说明

文章目录 2.DPDK 测试说明2.1硬件pci加密设备绑定到igb_uio驱动IGB_UIO 主要负责什么内容 &#xff1f; 2.2 test命令使用说明2.3 dpdk-test-crypto-perf命令使用说明2.4 使用testpmd测试网卡性能 2.DPDK 测试说明 2.1硬件pci加密设备绑定到igb_uio驱动 dpdk-stable/usertool…...

上传及接收pdf文件,使用pdfbox读取pdf文件内容

前端上传pdf文件 html <form class"layui-form"><div style"background-color: #ffffff" ><div style"padding: 30px"><div class"layui-form-item"><div class"layui-inline"><label c…...

第一个搭建SpringBoot项目(连接mysql)

首先新建项目找到Spring Initializr 我使用的URL是https://start.spring.io这里最低的JDK版本是17&#xff0c;而且当网速不好的时候可能会显示超时&#xff0c;这里可以选用阿里云的镜像https://start.aliyun.com可以更快一些但是里面还是有一些区别的 我们这里选择Java语言&a…...

docker部署rabbitMQ 单机版

获取rabbit镜像&#xff1a;我们选择带有“mangement”的版本&#xff08;包含web管理页面&#xff09;&#xff1b; docker pull rabbitmq:management 创建并运行容器&#xff1a; docker run -d --name rabbitmq -p 5677:5672 -p 15677:15672 rabbitmq:management --name:…...

PDF 全文多语言 AI 摘要 API 数据接口

PDF 全文多语言 AI 摘要 API 数据接口 PDF / 文本摘要 AI 生成 PDF 文档摘要 AI 处理 / 智能摘要。 1. 产品功能 支持多语言摘要生成&#xff1b;支持 formdata 格式 PDF 文件流传参&#xff1b;快速处理大文件&#xff1b;基于 AI 模型&#xff0c;持续迭代优化&#xff1b;…...

《信息系统安全》课程实验指导

第1关&#xff1a;实验一&#xff1a;古典密码算法---代换技术 任务描述 本关任务&#xff1a;了解古典密码体制技术中的代换技术&#xff0c;并编程实现代换密码的加解密功能。 注意所有明文字符为26个小写字母&#xff0c;也就是说字母表为26个小写字母。 相关知识 为了完…...

Accelerated Soft Error Testing 介绍

加速软错误测试(Accelerated Soft Error Testing, ASET)是一种评估半导体器件或集成电路(ICs)在高辐射环境中发生软错误率(Soft Error Rate, SER)的方法。这种测试方法通过模拟或加速软错误的发生,以便在较短时间内评估器件的可靠性。软错误指的是那些不会对硬件本身造成…...

Redis缓存常用的读写策略

缓存常用的读写策略 缓存与DB的数据不一致问题&#xff0c;大多数都是指DB的数据已经修改&#xff0c;而缓存中的数据还是旧数据的情况。 旁路缓存模式 对于读操作&#xff1a;基本上所有模式都是先尝试从缓存中读&#xff0c;没有的话再去DB读取&#xff0c;然后写到缓存中…...

9月产品更新 | 超10项功能升级,快来看看你的需求上线了吗?

Smartbi用户可以在官网&#xff08;PC端下载&#xff09;&#xff0c;更新后便可以使用相关功能&#xff0c;也可以在官网体验中心体验相关功能。 接下来&#xff0c;我们一起来看看都有哪些亮点功能更新吧。 ▎插件商城 Smartbi麦粉社区的应用市场新增了“插件”模块&#xf…...

ARP协议工作原理析解 (详细抓包分析过程)

目录 1. ARP 协议 2. 工作原理 3. ARP 协议报文格式 4. ARP 缓存的查看和修改 5. tcpdump 抓包分析 ARP 协议工作原理 5.1 搭建 2 台虚拟机 5.2 在主机 192.168.0.155 打开一个shell命令行开启抓包监听 5.3 在主机 192.168.0.155 打开另一个shell命令行 telnet 192.168.…...

axure动态面板

最近转管理岗了&#xff0c;作为项目负责人&#xff0c;需要常常与客户交流沟通&#xff0c;这时候画原型的能力就是不可或缺的本领之一了&#xff0c;关于axure可能很多it行业者都不是很陌生&#xff0c;简单的功能呢大家就自行去摸索&#xff0c;我们这次从动态面板开始讲起。…...

[论文笔记]Making Large Language Models A Better Foundation For Dense Retrieval

引言 今天带来北京智源研究院(BAAI)团队带来的一篇关于如何微调LLM变成密集检索器的论文笔记——Making Large Language Models A Better Foundation For Dense Retrieval。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c;比如替换"作者"为"我们&quo…...

Linux平台屏幕|摄像头采集并实现RTMP推送两种技术方案探究

技术背景 随着国产化操作系统的推进&#xff0c;市场对国产化操作系统下的生态构建&#xff0c;需求越来越迫切&#xff0c;特别是音视频这块&#xff0c;今天我们讨论的是如何在linux平台实现屏幕|摄像头采集&#xff0c;并推送至RTMP服务。 我们知道&#xff0c;Linux平台&…...

梧桐数据库|中秋节活动·抽奖领取大闸蟹

有话说 众所周不知&#xff0c;我的工作就是做一个国产的数据库产品—中国移动梧桐数据库&#xff08;简称WuTongDB&#xff09;。 近期我们举办了一次小活动&#xff0c;来提升梧桐数据库的搜索量和知名度&#xff0c;欢迎大家来参加&#xff0c;免费抽奖领取大闸蟹哦~~~ 具…...

Python怎么发送邮件:基础步骤与详细教程?

Python怎么发送邮件带附件&#xff1f;怎么使用Python发送邮件&#xff1f; 无论是工作中的通知、报告&#xff0c;还是生活中的问候、邀请&#xff0c;电子邮件都扮演着不可或缺的角色。那么&#xff0c;Python怎么发送邮件呢&#xff1f;AokSend将详细介绍Python发送邮件的基…...

[译] 大模型推理的极限:理论分析、数学建模与 CPU/GPU 实测(2024)

译者序 本文翻译自 2024 年的一篇文章&#xff1a; LLM inference speed of light&#xff0c; 分析了大模型推理的速度瓶颈及量化评估方式&#xff0c;并给出了一些实测数据&#xff08;我们在国产模型上的实测结果也大体吻合&#xff09;&#xff0c; 对理解大模型推理内部工…...

vue3 响应式 API:readonly() 与 shallowReadonly()

readonly() readonly()是一个用于创建只读代理对象的函数。它接受一个对象 (不论是响应式还是普通的) 或是一个 ref&#xff0c;返回一个原值的只读代理。 类型 function readonly<T extends object>(target: T ): DeepReadonly<UnwrapNestedRefs<T>>以下…...

迁移学习与知识蒸馏对比

应用场景不同 迁移学习&#xff1a;通常用于不同但相关的任务之间的知识迁移。特别是当目标任务的数据量不足时&#xff0c;可以从一个已经在大规模数据上训练好的模型中获取有用的特征或参数。典型场景包括计算机视觉任务&#xff0c;比如你在ImageNet上训练了一个ResNet&…...

【Java-反射】

什么是反射&#xff1f; JAVA反射机制是在运行状态中&#xff0c;创建任意一个类&#xff0c;能获取这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意一个方法和属性&#xff1b;这种动态获取的信息以及动态调用对象的方法的功能称为java语言…...

SABIC原GE塑料原料全面解析与市场应用

SABIC原GE塑料原料凭借其卓越的性能稳定性与广泛的应用适配性&#xff0c;成为众多制造企业的优选材料。作为国际一线工程塑料品牌&#xff0c;其产品涵盖PETG、PCTGG、PC、PA66等全品类&#xff0c;通过源头直采模式可为下游企业降低15%-18%采购成本&#xff0c;并提供全流程技…...

软件测试职业天花板真相:不是岗位不行,是你没找对方向

在软件行业高速发展的今天&#xff0c;打开任何一个技术论坛&#xff0c;总能刷到软件测试从业者的焦虑&#xff1a;“干了5年功能测试&#xff0c;薪资卡在15k再也上不去”“35岁还在写测试用例&#xff0c;是不是要被淘汰了”“AI都能自动生成测试脚本了&#xff0c;我们还有…...

用随机森林实现手写大写字母识别的完整实践

1. 项目概述&#xff1a;用随机森林搞定手写信件识别&#xff0c;这事儿比你想象中更接地气 “How To Perform Letter Recognition in Python Using Random Forest Classifier”——这个标题乍看像教科书里的章节名&#xff0c;但实际拆开来看&#xff0c;它直指一个非常典型、…...

抖音下载神器:免费批量下载抖音视频、图集、音乐和直播回放完整指南

抖音下载神器&#xff1a;免费批量下载抖音视频、图集、音乐和直播回放完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser f…...

QuantConnect Lean引擎架构深度剖析:构建模块化量化交易系统的技术实现

QuantConnect Lean引擎架构深度剖析&#xff1a;构建模块化量化交易系统的技术实现 【免费下载链接】Lean Lean Algorithmic Trading Engine by QuantConnect (Python, C#) 项目地址: https://gitcode.com/GitHub_Trending/le/Lean QuantConnect Lean引擎是一个开源的量…...

HS2-HF_Patch:终极Honey Select 2汉化与优化完整指南

HS2-HF_Patch&#xff1a;终极Honey Select 2汉化与优化完整指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch HS2-HF_Patch是专为Honey Select 2游戏设计的终…...

Taotoken助力企业级AI应用开发,统一管理多个Agent的API成本与用量

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken助力企业级AI应用开发&#xff0c;统一管理多个Agent的API成本与用量 当团队同时运行多个基于不同大模型的智能体应用时&a…...

RabbitMQ 入门与安装

RabbitMQ 入门与安装&#xff1a;从 MQ 概念到环境搭建 一、开篇&#xff1a;学习 RabbitMQ 前需要准备什么 RabbitMQ 属于消息中间件&#xff0c;是 Java 后端开发中非常常见的一类基础组件。学习它之前&#xff0c;最好已经具备以下基础&#xff1a; 具备一定 Java 基础&…...

DeepSeek高并发场景下的云原生弹性架构设计(千万QPS容灾实测数据首次公开)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;DeepSeek高并发场景下的云原生弹性架构设计&#xff08;千万QPS容灾实测数据首次公开&#xff09; 在支撑DeepSeek大模型推理服务的生产环境中&#xff0c;我们构建了一套面向千万级QPS的云原生弹性架构。该架…...

Java 面向对象 - 触发类的初始化,执行其中的 static 块(包含不会触发初始化的情况)

触发类的初始化&#xff0c;执行其中的 static 块 访问 static 字段 public class SomeClass {static {System.out.println("static block executed");}public static int num 100; }int num SomeClass.num;访问 static 方法&#xff0c;可以使用空方法&#xff08…...