队列——queue的用法(及洛谷B3616)
队列的概念
在说队列之前,先回忆一下栈是什么,我们一般说栈是一个先进后出的数据结构,而队列就是先进先出的数据结构。
队列是定在表的一端进行插入,表的另一端进行删除。
通常,我们称进数据的一端为队尾,出数据的一端为队首(这边需要注意,经常会记反起码我是这样的),数据元素进队列的过程称为入队,出队列的过程称为出队。
队列存储的方式主要分为两种:
1.顺序队列(集中存储) 2.链队列(分散存储)
两者的区别主要就是顺序表和链表的区别。
队列的用法
和栈一样,队列同样可以使用STL来操作。
队列的头文件是:
1 #include<queue> //当然万能头中也包括此头文件
有以下几种操作方式:
1 queue<int> q; //建立一个队列q
2 q.push(a); //将元素a插入到队列q的末尾
3 q.pop(); //删除q的队首元素
4 q.front(); //查询q的队首元素(这里要注意它和栈略有不同,栈中用的是top函数)
5 q.back(); //查询q的队尾元素
6 q.size(); //查询q的元素个数
7 q.empty(); //查询q是否为空
一定要注意在队列中查询队首元素是front不是top,不然就会被无情报错 本蒟蒻第一次打队列时记错了,结果……
队列的模板
题目
题目描述
请你实现一个队列(queue),支持如下操作:
push(x):向队列中加入一个数 x。
pop():将队首弹出。如果此时队列为空,则不进行弹出操作,并输出 “ERR_CANNOT_POP”。
query():输出队首元素。如果此时队首为空,则输出“ERR_CANNOT_QUERY”。
size():输出此时队列内元素个数。
输入格式
第一行,一个整数n,表示操作的次数。
接下来n行,每行表示一个操作。格式如下:
“1 x”,表示将元素 `x` 加入队列。
“2”,表示将队首弹出队列。
”3”,表示查询队首。
“4”,表示查询队列内元素个数。
输出格式
输出若干行,对于每个操作,按「题目描述」输出结果。
每条输出之间应当用空行隔开。
输入样例 输出样例
13 2
1 2 1
3 2
4 233
1 233 0
3 ERR_CANNOT_POP
2 ERR_CANNOT_QUERY
3 144
2
4
3
2
1 144
3
1 #include<bits/stdc++.h> //万能头文件,包含了<queue>
2 #define MAXN 100010
3 #define ll long long
4 using namespace std;
5 int n;
6 queue<unsigned long long> s;
7 int main()
8 {
9 cin>>n;
10 for(int i=1;i<=n;i++)
11 {
12 int a;
13 cin>>a;
14 if(a==1)
15 {
16 int x;
17 cin>>x;
18 s.push(x);
19 }
20 if(a==2)
21 {
22 if(s.empty())
23 cout<<"ERR_CANNOT_POP"<<endl;
24 else
25 s.pop();
26 }
27 if(a==3)
28 {
29 if(s.empty())
30 cout<<"ERR_CANNOT_QUERY"<<endl;
31 else
32 cout<<s.front()<<endl;
33 }
34 if(a==4)
35 cout<<s.size()<<endl;
36 }
37 return 0;
38 }
码字不易,点个赞呗§(* ̄▽ ̄*)§
队列——queue的用法(及洛谷B3616)的更多相关文章
- STL中队列queue的用法
头文件:#include <queue> 建立一个队列queue < 类型 > q 加入一个新的元素q.push(a) 询问队首元素q.front() 弹出队首元素q.pop( ...
- 洛谷3258:[USACO2012 MAR]Flowerpot 花盆——题解
https://www.luogu.org/problemnew/show/P2698#sub 老板需要你帮忙浇花.给出N滴水的坐标,y表示水滴的高度,x表示它下落到x轴的位置. 每滴水以每秒1个单位 ...
- 【新知识】队列&bfs【洛谷p1996约瑟夫问题&洛谷p1451求细胞数量】
(是时候为五一培训准备真正的技术了qwq) part1 队列(FIFO) 算法简介: FIFO:First In First Out(先进先出) 队列是限定在一端进行插入,另一端进行删除的特殊线性表 ...
- 【BZOJ】4721: [Noip2016]蚯蚓 / 【洛谷】P2827 蚯蚓(单调队列)
Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮 ...
- 洛谷P2216: [HAOI2007]理想的正方形 单调队列优化DP
洛谷P2216 )逼着自己写DP 题意: 给定一个带有数字的矩阵,找出一个大小为n*n的矩阵,这个矩阵中最大值减最小值最小. 思路: 先处理出每一行每个格子到前面n个格子中的最大值和最小值.然后对每一 ...
- 洛谷P3222 [HNOI2012]射箭(计算几何,半平面交,双端队列)
洛谷题目传送门 设抛物线方程为\(y=ax^2+bx(a<0,b>0)\),我们想要求出一组\(a,b\)使得它尽可能满足更多的要求.这个显然可以二分答案. 如何check当前的\(mid ...
- 不失一般性和快捷性地判定决策单调(洛谷P1912 [NOI2009]诗人小G)(动态规划,决策单调性,单调队列)
洛谷题目传送门 闲话 看完洛谷larryzhong巨佬的题解,蒟蒻一脸懵逼 如果哪年NOI(放心我这样的蒟蒻是去不了的)又来个决策单调性优化DP,那蒟蒻是不是会看都看不出来直接爆\(0\)?! 还是要 ...
- 洛谷P3628 [APIO2010]特别行动队(动态规划,斜率优化,单调队列)
洛谷题目传送门 安利蒟蒻斜率优化总结 由于人是每次都是连续一段一段地选,所以考虑直接对\(x\)记前缀和,设现在的\(x_i=\)原来的\(\sum\limits_{j=1}^ix_i\). 设\(f ...
- 洛谷P2900 [USACO08MAR]土地征用Land Acquisition(动态规划,斜率优化,决策单调性,线性规划,单调队列)
洛谷题目传送门 用两种不一样的思路立体地理解斜率优化,你值得拥有. 题意分析 既然所有的土地都要买,那么我们可以考虑到,如果一块土地的宽和高(其实是蒟蒻把长方形立在了平面上)都比另一块要小,那么肯定是 ...
- 洛谷P3515 [POI2011]Lightning Conductor(动态规划,决策单调性,单调队列)
洛谷题目传送门 疯狂%%%几个月前就秒了此题的Tyher巨佬 借着这题总结一下决策单调性优化DP吧.蒟蒻觉得用数形结合的思想能够轻松地理解它. 首先,题目要我们求所有的\(p_i\),那么把式子变一下 ...
随机推荐
- SpringBoot2.5.1+Mybatis-Plus3.4.3:(Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required)
项目引发这个问题: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required <parent> <group ...
- IDEA把项目推送到Gitee
1.在gitee注册账户:QQ注册就是:QQ邮箱和密码 2.新建一个自己的仓库 3.打开本地的IDEA中的项目 4.添加git项目标记||前提都是IDEA已关联你的GIt软件 5.查看git项目标记是 ...
- Tkinter根据屏幕分辨率最大化适应屏幕
还不能够实现所有组件随分辨率自动变化 # 实现的是界面覆盖整个屏幕 from tkinter import * import win32api, win32con # 获取屏幕的分辨率 width = ...
- Springboot自动装配源码及启动原理理解
Springboot自动装配源码及启动原理理解 springboot版本:2.2.2 传统的Spring框架实现一个Web服务,需要导入各种依赖JAR包,然后编写对应的XML配置文件 等,相较而言,S ...
- 【终极解决办法】pyinstaller打包exe没有错误,运行exe提示Failed to execute script 'mainlmageWindows' due tounhandled exception: No module named 'docx'
一.通过pyinstaller打包exe可执行文件,由于我的py是多个,所以要先生成spec文件,代码如下: pyi-makespec mainImageWindows.py 此时生产了一个mainI ...
- MIsc writeup
1. 杂项 图片里面有什么 ,附件为一张图片 通过Binwalk查看发现有压缩包,通过foremost分离一下. 打开输出文件,发现里面有两个图片. 00000000.png是原图,00000722. ...
- DOM(原生js事件绑定)
一:原生js事件绑定 1.开关灯案例 <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- 从稍微懂一点开始的C++学习之路1: 智能指针
从稍微懂一点开始的C++学习之路1 智能指针 因为之前一直是搞qt的,没有搞过纯c++,所以现在算得上是刚开始学纯C++.C++的大部分语法其实我都懂,主要的是一些规范,还有内存回收等一些细节地方纯C ...
- java逻辑运算&&与&的区别
本文主要阐述&&(短路与)和&(逻辑与)的运算异同:a && b 和 a&b : 共同之处是只有a和b同时为真时,结果才为真,否则为假 不同点在于 a ...
- Ubuntu:Docker 容器操作
创建容器 1.docker run [option] 镜像名 [向启动容器中传入的命令] 常用可选说明 -i 表示以"交互模式"运行容器 -t 表示容器启动后会进入其命令行.加入这 ...