lanqiaoOJ 3745:餐厅排队 ← 数组模拟队列

embedded/2024/11/26 13:21:15/

【题目来源】
https://www.lanqiao.cn/problems/3745/learning/

【题目描述】
在蓝桥学院的新餐厅,学生们在取餐窗囗形成了一条长队。小蓝,餐厅的经理,希望能够实时了解队伍最前面和最后面的学生编号。你需要执行以下三种操作:
1.学生进入队列:编号为x的学生排到队伍的末尾。
2.学生离开队列:最前面的学生拿到餐后离开队伍。
3.查询队列状态:输出当前队伍最前面和最后面的学生编号。
请注意,学生们可能会在吃完饭后再次排队。

【输入格式】
首先,你会看到一个整数q,表示你需要执行的操作次数。
接下来的q行,每行将包含一个或两个整数,代表一次操作:
  1. 1 x:编号为x的学生加入队伍。
  2. 2:最前面的学生拿到餐并离开队伍。
  3. 3:输出当前队伍最前面和最后面的学生编号(两个编号之间用一个空格隔开)。
数据范围保证:1<x, q<10^5。进行操作2和3时,队伍一定非空。每个学生的编号都是唯一的。

【输出格式】
对于每一次的3操作,输出一行包含两个整数,即当前队伍最前面和最后面的学生编号。

【输入样例】
5
1 1
1 3
3
2
3

【输出样例】
1 3
3 3

【说明】
对于给出的样例,队伍的变化过程如下:
1.编号为1的学生加入队伍,队列变为q=[1]。
2.编号为3的学生加入队伍,队列变为q=[1,3]。
3.输出队伍最前面和最后面的学生编号,分别为1和3。
4.最前面的学生拿到餐并离开队伍,队列变为q=[3]。
5.输出队伍最前面和最后面的学生编号,分别为3和3。

【算法分析】
利用数组模拟队列的实现,常有 
head=0、tail=0 及 head=0、tail=-1 两种不同的情况。
参见:
https://blog.csdn.net/hnjzsyjyj/article/details/133636109

【算法代码】

#include <bits/stdc++.h>
using namespace std;const int maxn=1e5+5;
int q[maxn];
int head=0,tail=-1;int main() {int n,op;cin>>n;while(n--) {cin>>op;if(op==1) {int x;cin>>x;q[++tail]=x;} else if(op==2) {head++;} else if(op==3) {cout<<q[head]<<" "<<q[tail]<<endl;}}return 0;
}/*
in:
5
1 1
1 3
3
2
3out:
1 3
3 3
*/



【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/133636109





 


http://www.ppmy.cn/embedded/140631.html

相关文章

Debian/Ubuntu 、Fedora 、Arch Linux, 在Linux上,对文本文件进行多线程压缩 xz、pxz、zstd、7z、lrzip

Debian/Ubuntu 、Fedora 、Arch Linux&#xff0c; 在Linux上&#xff0c;对文本文件进行多线程压缩 xz、pxz、zstd、7z、lrzip 前言对比多线程压缩1. 使用 pxz安装 pxz使用 pxz 2. 使用 xz 的 -T 选项使用 xz -T 3. 其他压缩命令1. 使用 gzip2. 使用 bzip23. 使用 xz4. 使用 7…

sql server 主从job对比差异

---查看job的基本信息 select a.job_id,a.name, a.date_created ,a.date_modified ,case when a.enabled1 then N是when a.enabled0 then N否 end as enabled ,a.description, b.step_id,b.step_name,b.subsystem,b.command,b.database_name,b.last_run_datefrom msdb.dbo.sy…

泷羽sec--轻松了解burp的配置使用及各个模块的作用

声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&#…

docker镜像、容器、仓库介绍

docker docker介绍docker镜像命令docker容器命令docker仓库 docker介绍 官网 Docker 是一种开源的容器化平台&#xff0c;用于开发、部署和运行应用。它通过将应用程序及其依赖项打包到称为“容器”的单一包中&#xff0c;使得应用能够在任何环境下运行&#xff0c;不受底层系…

人工智能之数学基础:向量的基本知识

本文重点 向量的基本性质是线性代数和向量空间理论的核心,它们为向量运算提供了坚实的基础,并在物理、工程、计算机图形学等领域有着广泛的应用。本文对向量的一些基本知识进行介绍,帮助大家快速理解向量。 向量的定义与表示 向量是一个既有大小又有方向的量,通常用带箭…

php 导出excel 一个单元格 多张图片

public function dumpData(){error_reporting(0); // 禁止错误信息输出ini_set(display_errors, 0); // 不显示错误$limit $this->request->post(limit, 20, intval);$offset $this->request->post(offset, 0, intval);$page floor($offset / $limit) 1 ;$wh…

web开发中浏览器的重排与重绘

重排&#xff08;Reflow&#xff09; 和 重绘&#xff08;Repaint&#xff09; 是浏览器在渲染网页时涉及的两个重要过程&#xff0c;它们直接影响网页性能。理解它们的区别和优化方法对于前端开发至关重要。 1. 重排&#xff08;Reflow&#xff09; 定义 重排是指当网页布局…

2024 年第十七届山东省职业院校技能大赛 高职组“信息安全管理与评估”比赛通知

第十七届山东省职业院校技能大赛 高职组“信息安全管理与评估”比赛通知 2024 年山东省职业院校技能大赛高职组“信息安全管理与评估 ” 比赛定 于 12 月 18—20 日在烟台职业学院举行。 一、比赛相关安排 1.报到时间地点 各参赛队 12 月 18 日 14:00 前报到&#xff0c;地点&a…