队列的概念

  在说队列之前,先回忆一下栈是什么,我们一般说栈是一个先进后出的数据结构,而队列就是先进先出的数据结构。

  队列是定在表的一端进行插入,表的另一端进行删除。

  通常,我们称进数据的一端为队尾,出数据的一端为队首(这边需要注意,经常会记反起码我是这样的),数据元素进队列的过程称为入队,出队列的过程称为出队。

  队列存储的方式主要分为两种:

    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)的更多相关文章

  1. STL中队列queue的用法

    头文件:#include <queue> 建立一个队列queue < 类型 > q 加入一个新的元素q.push(a) 询问队首元素q.front() 弹出队首元素q.pop( ...

  2. 洛谷3258:[USACO2012 MAR]Flowerpot 花盆——题解

    https://www.luogu.org/problemnew/show/P2698#sub 老板需要你帮忙浇花.给出N滴水的坐标,y表示水滴的高度,x表示它下落到x轴的位置. 每滴水以每秒1个单位 ...

  3. 【新知识】队列&bfs【洛谷p1996约瑟夫问题&洛谷p1451求细胞数量】

    (是时候为五一培训准备真正的技术了qwq) part1  队列(FIFO) 算法简介: FIFO:First In First Out(先进先出) 队列是限定在一端进行插入,另一端进行删除的特殊线性表 ...

  4. 【BZOJ】4721: [Noip2016]蚯蚓 / 【洛谷】P2827 蚯蚓(单调队列)

    Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮 ...

  5. 洛谷P2216: [HAOI2007]理想的正方形 单调队列优化DP

    洛谷P2216 )逼着自己写DP 题意: 给定一个带有数字的矩阵,找出一个大小为n*n的矩阵,这个矩阵中最大值减最小值最小. 思路: 先处理出每一行每个格子到前面n个格子中的最大值和最小值.然后对每一 ...

  6. 洛谷P3222 [HNOI2012]射箭(计算几何,半平面交,双端队列)

    洛谷题目传送门 设抛物线方程为\(y=ax^2+bx(a<0,b>0)\),我们想要求出一组\(a,b\)使得它尽可能满足更多的要求.这个显然可以二分答案. 如何check当前的\(mid ...

  7. 不失一般性和快捷性地判定决策单调(洛谷P1912 [NOI2009]诗人小G)(动态规划,决策单调性,单调队列)

    洛谷题目传送门 闲话 看完洛谷larryzhong巨佬的题解,蒟蒻一脸懵逼 如果哪年NOI(放心我这样的蒟蒻是去不了的)又来个决策单调性优化DP,那蒟蒻是不是会看都看不出来直接爆\(0\)?! 还是要 ...

  8. 洛谷P3628 [APIO2010]特别行动队(动态规划,斜率优化,单调队列)

    洛谷题目传送门 安利蒟蒻斜率优化总结 由于人是每次都是连续一段一段地选,所以考虑直接对\(x\)记前缀和,设现在的\(x_i=\)原来的\(\sum\limits_{j=1}^ix_i\). 设\(f ...

  9. 洛谷P2900 [USACO08MAR]土地征用Land Acquisition(动态规划,斜率优化,决策单调性,线性规划,单调队列)

    洛谷题目传送门 用两种不一样的思路立体地理解斜率优化,你值得拥有. 题意分析 既然所有的土地都要买,那么我们可以考虑到,如果一块土地的宽和高(其实是蒟蒻把长方形立在了平面上)都比另一块要小,那么肯定是 ...

  10. 洛谷P3515 [POI2011]Lightning Conductor(动态规划,决策单调性,单调队列)

    洛谷题目传送门 疯狂%%%几个月前就秒了此题的Tyher巨佬 借着这题总结一下决策单调性优化DP吧.蒟蒻觉得用数形结合的思想能够轻松地理解它. 首先,题目要我们求所有的\(p_i\),那么把式子变一下 ...

随机推荐

  1. SpringBoot2.5.1+Mybatis-Plus3.4.3:(Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required)

    项目引发这个问题: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required <parent> <group ...

  2. IDEA把项目推送到Gitee

    1.在gitee注册账户:QQ注册就是:QQ邮箱和密码 2.新建一个自己的仓库 3.打开本地的IDEA中的项目 4.添加git项目标记||前提都是IDEA已关联你的GIt软件 5.查看git项目标记是 ...

  3. Tkinter根据屏幕分辨率最大化适应屏幕

    还不能够实现所有组件随分辨率自动变化 # 实现的是界面覆盖整个屏幕 from tkinter import * import win32api, win32con # 获取屏幕的分辨率 width = ...

  4. Springboot自动装配源码及启动原理理解

    Springboot自动装配源码及启动原理理解 springboot版本:2.2.2 传统的Spring框架实现一个Web服务,需要导入各种依赖JAR包,然后编写对应的XML配置文件 等,相较而言,S ...

  5. 【终极解决办法】pyinstaller打包exe没有错误,运行exe提示Failed to execute script 'mainlmageWindows' due tounhandled exception: No module named 'docx'

    一.通过pyinstaller打包exe可执行文件,由于我的py是多个,所以要先生成spec文件,代码如下: pyi-makespec mainImageWindows.py 此时生产了一个mainI ...

  6. MIsc writeup

    1. 杂项 图片里面有什么 ,附件为一张图片 通过Binwalk查看发现有压缩包,通过foremost分离一下. 打开输出文件,发现里面有两个图片. 00000000.png是原图,00000722. ...

  7. DOM(原生js事件绑定)

    一:原生js事件绑定 1.开关灯案例 <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  8. 从稍微懂一点开始的C++学习之路1: 智能指针

    从稍微懂一点开始的C++学习之路1 智能指针 因为之前一直是搞qt的,没有搞过纯c++,所以现在算得上是刚开始学纯C++.C++的大部分语法其实我都懂,主要的是一些规范,还有内存回收等一些细节地方纯C ...

  9. java逻辑运算&&与&的区别

    本文主要阐述&&(短路与)和&(逻辑与)的运算异同:a && b 和 a&b : 共同之处是只有a和b同时为真时,结果才为真,否则为假 不同点在于 a ...

  10. Ubuntu:Docker 容器操作

    创建容器 1.docker run [option] 镜像名 [向启动容器中传入的命令] 常用可选说明 -i 表示以"交互模式"运行容器 -t 表示容器启动后会进入其命令行.加入这 ...