小明排队 (queue的用法)

本文介绍了如何利用STL中的队列数据结构解决一道关于排队问题的算法题目。通过模拟队伍中人员的加入和离开,展示队列(queue)在处理此类问题中的应用,并列出队列的常用成员函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小明排队

大家好,欢迎来到STL系列课堂,我是隔壁老王,时刻准备更新博客!!!

题目描述
一天小明去排队买电影票,然后她发现队伍已经有了n个人,分别为a1,a2…an。小明不想排队,于是她开始观察这条队伍m秒, 每秒仅有1个人来排队或者排在最后的那个人不耐烦走了,如果在这一秒内两者都没有发生那么小明就想知道队伍还有没有人。

输入
第一行有两个整数n(n≤1000),m(m≤10000)。第二行有n个整数ai(ai≤100000)表示排在第i位是人是ai。接下来m行,每行有一个整数p(p≤3),当p=1时则当前行还存在另一个整数x(x≤100000)表示x来排队;当p=2时则表示排在最后的那个人不耐烦走了;当p=3时小明想知道队伍还有没有人。

输出
若干行,每一行表示队伍还有没有人,没有人输出YES,有输出排在最后的人是谁。

样例输入
3 8
1 2 3
1 4
3
2
3
2
2
2
3

样例输出
4
3
YES

这道题使用STL中的队列(queue)来解决,队列就像你排队似的。第一个人做完了,离开队伍(出队),第二个人就继续变成第一个人,如果外面的人想跟着做,就要排在队伍后面。(入队)first in first out(先进先出)也是队列的别名,简称FIFO

queue的常用成员函数:

 1. queue<int>a; //定义一个队列成员为int类型的a
 2. a.top();     //返回队首元素(不出队)
 3. a.push(x);   //将x入队
 4. a.pop();     //队首元素出队
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值