首页 > 其他分享 >K12484 银行排队(bank)

K12484 银行排队(bank)

时间:2024-09-13 20:51:10浏览次数:3  
标签:17 排队 业务 long bank 编号 K12484 顾客 办理

题目描述

K个人来银行排队办理业务,银行有n个窗口可以同时办理,每个窗口允许有m个人排队,其余的人在银行大厅等待。当某个窗口排队人数少于m时,在大厅等待的人可进入该窗口排队。每个人都有自己要办的业务,每个业务要花费一定的时间,银行的上班时间是早上8点到下午17点,若开始办理业务的时间大于等于17点,就无法办理相关的业务了。

有q次查询,查询q个顾客办理业务结束时的时间。对于无法办理相关业务的查询,输出sorry。

假设第一位顾客从早上8点开始办理业务,k个顾客编号依次为: 1、2…k。 

输入格式

共3行:

第一行4个由空格分隔的正整数,分别表示n,m,k,q

第二行为k个由空格分隔的正整数,分别表示每个人办理业务所需时间

第三行为q个由空格分隔的正整数,分别表示每次查询时要查询的顾客编号

输出格式

共q行,对应每次查询的结果,每个结果的格式为: hh:mm

输入输出样例

说明

该银行共有两个窗口,每个窗口可同时供2人排队,总共有7人需要办理业务,有5次询问,分别是编号为3、4、5、6、7 的顾客结束时间;输出结果显示编号为 3 的顾客在 08:07 分结束,编号为 4 的顾客在 08:06 分结束,编号为 5 的顾客在 08:10 分结束,编号为 6 的顾客在 17:00 分结束,编号为 7 的顾客在开始办理业务前,银行就下班了,所以输出 sorry。 

数据范围: 

1<=n<=10  1<=m<=5  1<=k, q<=100 

补充说明:只要顾客在下班前开始办理业务,那就要将其办理完,因此,查询输出的结束时间有可能超过 17:00。 

【耗时限制】1000ms 【内存限制】128MB

AC代码:

#include <bits/stdc++.h>
using namespace std;
const long long INF = INT_MAX;
queue<long long> q[110];
long long t[110];
long long e[110];
queue<long long> win[110];
int main() {
	long long n, m, k, q, id;
	cin >> n >> m >> k >> q;
	for (long long i = 1; i <= k; i++) {
		cin >> t[i];
	}
	long long now = 1;
	for (long long i = 1; i <= min(n * m, k); i++) {
		if (win[now].empty()) e[i] = t[i];
		else e[i] = win[now].back() + t[i];
		win[now].push(e[i]);
		now++;
		if (now > n) now = 1;
	}
	for (long long i = n * m + 1; i <= k; i++) {
		long long minn = INF, pos;
		for (long long j = 1; j <= n; j++) {
			if (win[j].front() < minn) {
				minn = win[j].front();
				pos = j;
			}
		}
		e[i] = win[pos].back() + t[i];
		win[pos].pop();
		win[pos].push(e[i]);
	}
	while (q--) {
		cin >> id;
		long long et = e[id] + 8 * 60;
		long long st = et - t[id];
		if (st >= 17 * 60) {
			cout << "sorry" << endl;
		}
		else {
			printf("%02lld:%02lld\n", et / 60, et % 60);
		}
	}
	return 0;
}

标签:17,排队,业务,long,bank,编号,K12484,顾客,办理
From: https://blog.csdn.net/dfhsusd/article/details/142219861

相关文章

  • 两种消息传递模式:发布订阅模式,排队模式
    Kafka是一种分布式流处理平台,支持多种消息传递模式,其中最主要的两种模式是发布-订阅(Pub-Sub)和排队(Queueing)。具体来说,Kafka的设计和实现允许它灵活地支持这两种模式。发布-订阅(Pub-Sub)模式在Kafka中,主题(Topic)是发布-订阅模式的核心概念:Producer(生产者)将消息发布到一个或多个......
  • 洛谷题单指南-分治与倍增-P1966 [NOIP2013 提高组] 火柴排队
    原题链接:https://www.luogu.com.cn/problem/P1966题意解读:计算两个序列∑(ai​−bi​)^2的最小值,对10^8-3取模。解题思路:1、贪心思路要使得两个序列对应位置元素之差的平方和最小,必须满足两个序列相对排序是一致的,什么意思?设a序列有两个元素:a1,a2,b序列有两个元素b1,b2当a1<a2,b......
  • Guitar Pro 8.2.1 Build 32中文解锁版+Soundbanks Win/Mac音色库 开心激活版
    GuitarPro8.2.1Build32开心版软件是一个受吉他手喜爱的吉他和弦、六线谱、BASS四线谱绘制、打印、查看、试听软件,它也是一款优秀的MIDI音序器,MIDI制作辅助工具,可以输出标准格式的MIDI。GP的过人之处就在于它可以直接用鼠标和键盘按标准的六线谱、四线谱进行乐谱输入......
  • CSP-CCF★★201703-2学生排队★★
    目录 一、问题描述二、解答方法1:使用数组方法2:使用vector容器三、总结 一、问题描述问题描述体育老师小明要将自己班上的学生按顺序排队。他首先让学生按学号从小到大的顺序排成一排,学号小的排在前面,然后进行多次调整。一次调整小明可能让一位同学出队,向前或......
  • CUDA教程之 10 掌握 CUDA 矩阵乘法:共享内存、Tile 内存合并和 Bank 冲突简介(教程含源
    介绍在使用CUDA进行GPU编程的世界中,优化性能是关键。实现此目标的最强大技术之一是使用共享内存。本博客将引导您完成使用共享内存执行矩阵乘法的CUDA程序,特别关注理解分块内存合并和存储体冲突。在本文结束时,您将牢固掌握共享内存如何显著加快您的计算速度以及如何......
  • 排队免单小程序
    本文来自:排队免单小程序-源码1688应用介绍排队免单小程序是基于移动互联网技术开发的平台系统,通过小程序的形式为消费者和商家搭建了一个互动桥梁。以下是对排队免单小程序的详细介绍:一、基本概念排队免单小程序是一种创新的营销工具,旨在通过优惠活动吸引消费者,提升商......
  • 假设Sigmund Landers在商业街设置了一个提供建议的摊位,顾客可以购买1分钟,2分钟,或3分钟
    /假设SigmundLanders在商业街设置了一个提供建议的摊位,顾客可以购买1分钟,2分钟,或3分钟的建议,为确保交通每个摊位前排队等待的顾客最多10人,用两个队列模拟两个摊位/#include<stdio.h>#include<stdlib.h>#defineMAX_SIZE10typedefstruct{intitems[MAX_SIZE];......
  • 洛谷P1223 排队接水
    P1223排队接水题目描述有\(n\)个人在一个水龙头前排队接水,假如每个人接水的时间为\(T_i\),请编程找出这\(n\)个人排队的一种顺序,使得\(n\)个人的平均等待时间最小。输入格式第一行为一个整数\(n\)。第二行\(n\)个整数,第\(i\)个整数\(T_i\)表示第\(i\)个人的......
  • 蒙特卡洛模拟(2)————排队问题
    目录一、基础知识补充1.normrnd(MU,SIGMA)2.exprnd(M)3.tic与toc二、问题提出三、模型建立1.引入符号2.引入符号后,我们可以由题目得到一些递推关系,由这个递推关系做出一个循环进行我们的模拟四、第一问代码求解1.字符初始化2.带入模型进行循环3.输出结果五、第二问代码求解一、基......
  • 开启内卷!国内视频生成模型再添新成员!免费低排队助你快速开始
    前言......