备战蓝桥杯 队列和queue详解
目录
队列的概念
队列的静态实现
总代码
stl的queue
队列算法题
1.队列模板题
2.机器翻译
3.海港
双端队列
队列的概念
和栈一样,队列也是一种访问受限的线性表,它只能在表头位置删除,在表尾位置插入,队列是先进先出(FIFO)栈是后进先出(LIFO)
队列的静态实现
我们用一个比较大的数组来表示队列,h表示队头的前一个元素,t表示队尾元素
队列的创建
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int q[N], h, t;
队列的插入
void push(int x)
{q[++t] = x;
}
和顺序表的尾插差不多,时间复杂度是O(1)
队列的删除
我们的删除直接让头指针向前移动一位就行了
void pop()
{h++;
}
查询队头元素
h指向的是队头的前一个元素的下标,所以h+1是队头的下标
int front()
{return q[h + 1];
}
查询队尾元素
t就是队尾元素的下标
int back()
{return q[t];
}
队列判空
当我们只剩一个元素的时候,h指向这个元素的前面,t指向这个元素,如果删除的话,h++ h就和t相等了,这和我们刚开始没有元素的状态也是一致的,所以h==t就是我们判断队列为空的要点
bool empty()
{return h == t;
}
队列有效元素个数
由于我们h和t是左开右闭的,所以t-h就是中间的元素个数,比如h指向1,t指向3的时候,下标2,3就是我们的元素,3-1=2就是元素个数是一致的
int size()
{return t - h;
}
测试
总代码
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int q[N], h, t;
void push(int x)
{q[++t] = x;
}
void pop()
{h++;
}
int front()
{return q[h + 1];
}
int back()
{return q[t];
}
bool empty()
{return h == t;
}
int size()
{return t - h;
}
int main()
{for (int i = 1; i <= 10; i++){push(i);}while (size()){cout << front() << " " << back() << endl;pop();}return 0;
}
stl的queue
测试代码
#include <iostream>
#include <queue>
using namespace std;
typedef pair<int, int> PII;
int main()
{queue <PII> q;for (int i = 1; i <= 10; i++){q.push({ i,i * 10 });}while (!q.empty()){auto t = q.front();int first = t.first;int second = t.second;cout << first << " " << second << endl;q.pop();}}
测试结果
队列算法题
1.队列模板题
#include <iostream>
using namespace std;
const int N = 1e4+10;
int q[N],h,t;int main()
{int n,op,x;cin >> n;while(n--){cin >> op;if(op == 1){cin >> x;q[++t] = x;}else if(op == 2){if(t-h == 0) cout << "ERR_CANNOT_POP" << endl;else h++;}else if(op == 3){if(t-h == 0) cout << "ERR_CANNOT_QUERY" << endl;else cout << q[h+1] << endl;}else{cout << t-h << endl;}}
}
2.机器翻译
我们可以用队列来模拟这个内存存储的单元格,此外我们还需要一个bool数组来判断某个单词在不在内存中
下面是我们的实现的代码
#include <iostream>
#include <queue>
using namespace std;
const int N = 1010;
bool st[N];
int cnt;
queue <int> q;
int main()
{int n,m;cin >> m >> n;while(n--){int x; cin >> x;if(st[x]);else{q.push(x);st[x] = true;cnt++;if(q.size() > m){st[q.front()] = false;q.pop();}}}cout << cnt << endl;
}
3.海港
这道题我们用队列来模拟,我们用一个数组来记录每个国家的人数,当每个国家从0变1时,种类加1,从1变0时,种类减1
先把每个船的信息入队列,用pair类型,<时间,国家>来入队列,每次入队列判断种类是否加1
每个船的信息入完了之后,要判断队列合不合法,如果队头的时刻和队尾的时刻差值超过24小时,我们就要把第一个时刻的信息出队列,出队列的时候再次判断要不要让种类减1
每次一个信息弄完就打印一下种类
#include <iostream>
#include <queue>
using namespace std;
const int N = 1e5+10;
typedef pair<int,int> PII;
int t,k;
int cnt[N];//记录每个国家的人数,从0到1时种类加1,从1到0时种类减1,其他不变
int kinds;//记录国家种类
queue <PII> q;
int main()
{int n;cin >> n;while(n--){cin >> t >> k;while(k--){int x;cin >> x;q.push({t,x});if(cnt[x]++ == 0){kinds++;}}//让队列合法while(q.size() && (q.back().first - q.front().first >= 86400)) {int tmp;tmp = q.front().second;if(cnt[tmp]-- == 1){kinds--;}q.pop();}cout << kinds << endl;} return 0;}
双端队列
什么是双端队列?
双端队列也是一种特殊的线性表,它允许在表的两端插入和删除元素
我们就不实现它的模拟实现了
我们直接用stl现成的双端队列deque测试一下
头插头删
#include <iostream>
#include <deque>
using namespace std;
struct node {int x, y, z;
};
deque <node> q;
int main()
{//头插和头删for (int i = 1; i <= 5; i++){q.push_front({ i,i * 5,i * 10 });}while (q.size()){auto t = q.front();q.pop_front();cout << t.x << " " << t.y << " " << t.z << endl;}
}
同理尾插和尾删
#include <iostream>
#include <deque>
using namespace std;
struct node {int x, y, z;
};
deque <node> q;
int main()
{//尾插和尾删for (int i = 1; i <= 5; i++){q.push_back({ i,i * 5,i * 10 });}while (q.size()){auto t = q.back();q.pop_back();cout << t.x << " " << t.y << " " << t.z << endl;}
}
相关文章:
备战蓝桥杯 队列和queue详解
目录 队列的概念 队列的静态实现 总代码 stl的queue 队列算法题 1.队列模板题 2.机器翻译 3.海港 双端队列 队列的概念 和栈一样,队列也是一种访问受限的线性表,它只能在表头位置删除,在表尾位置插入,队列是先进先出&…...
《分布式光纤测温:解锁楼宇安全的 “高精度密码”》
在楼宇建筑中,因其内部空间庞大,各类电器设施众多,如何以一种既高效又稳定,兼具低成本与高覆盖特性的方式,为那些关键线路节点开展温度监测,是目前在安全监测领域一项重点研究项目,而无锡布里渊…...
每日一题(一):识别字符串中的字符是否唯一
目录 一、前言 二、题目 三、题目分析 (一)明确需求 (二)分析思路 四、将思路转变为一个程序 C代码 C代码 注释: 五、总结 一、前言 作为博主在本系列文章中的第一篇文章,博主先对本系列做一个简单的介绍…...
【翻译】2025年华数杯国际赛数学建模题目+翻译pdf自取
保存至本地网盘 链接:https://pan.quark.cn/s/f82a1fa7ed87 提取码:6UUw 2025年“华数杯”国际大学生数学建模竞赛比赛时间于2025年1月11日(周六)06:00开始,至1月15日(周三)09:00结束ÿ…...
如何稳定使用 O1 / O1 Pro,让“降智”现象不再困扰?
近期,不少朋友在使用 O1 或 O1 Pro 模型时,都会碰到“降智”或“忽高忽低”的智力波动,比如无法识图、无法生成图片、甚至回答准确度也不稳定。面对这些问题,你是不是也感到头疼呢? 为了找到更可靠的解决办法…...
【Linux】4.Linux常见指令以及权限理解(2)
文章目录 3. Linux指令3.1 ls指令和rm指令补充3.2 man指令(重要)3.3cp指令(重要)输出重定向3.3.1ubuntu20.04如何安装tree 3.4 mv指令(重要)mv指令更改文件名mv指令更改目录名 如何看待指令指令的重命名3.5…...
神州数码交换机和路由器命令总结
神州数码交换机和路由器命令总结 一、神州数码交换机命令总结 1. 交换机恢复出厂设置及其基本配置. 1) //进入特权模式 2) del startup.cfg 2. Telnet方式管理交换机. 1) //进入全局配置模式 2) enable password 0 [密码] 3) Line 0 4 4) Password 0 [密码] 5) Login 3. 交换机…...
echarts: 双柱柱状图同时两侧双y轴问题
问: 现在又有一个问题:echarts双柱柱状图,同时左侧的y轴有刻度,右侧的y轴也有刻度,双y轴,y轴每一个刻度都对应虚线,这时候会有一个问题,左侧的y轴的虚线和右侧y轴的虚线没对应&…...
计算机网络八股文学习笔记
文章目录 计算机网络基础网络分层模型OSI七层模型TCP/IP四层模型 HTTP从输入URL到页面展示到底发生了什么?(非常重要)HTTP状态码HTTP Header中常见的字段有哪些?HTTP和HTTPS有什么区别?(重要)HTTP/1.0和HTTP/1.1有什么区别?HTTP/1.1和HTTP/2.0有什么区别?HTTP/2.0和HTTP/3…...
java中json字符串键值获取
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version> </dependency>使用fastjson依赖 JSONObject jsonObject JSON.parseObject(s); 这个jsonObject本质就是一个map&…...
MySQL的安装
MySQL典型的关系型数据库(RDBMS):oracle、MySQL、SqlServer MySQL的版本 5.5~5.7、8.0 MySQL的安装和配置 下载地址: https://downloads.mysql.com/archives/community/ 安装包 (x86, 64-bit), MSI Installer 执行下一步即…...
Open FPV VTX开源之第一次出图
Open FPV VTX开源之第一次出图 1. 源由2. 连线2.1 飞控2.2 调试 3. serial3.1 启动log - uboot3.2 登录版本 - linux3.3 获取有线IP 4. ssh - linux5. PixelPilot出图6. 总结7. 参考资料8. 补充 - 8812AU网卡 1. 源由 在《Open FPV VTX开源之硬件规格及组成》章节中࿰…...
R语言在森林生态研究中的魔法:结构、功能与稳定性分析——发现数据背后的生态故事!
森林生态系统结构、功能与稳定性分析与可视化研究具有多方面的重要意义,具体如下: 一、理论意义 ●深化生态学理论 通过研究森林生态系统的结构、功能与稳定性,可以深化对生态系统基本理论的理解。例如,生物多样性与生态系统稳定性…...
qt QLabel QPushButton 控件重写paintEvent后 控件消失
qt 继承自PushButton控件的类 重写paintEvent后 控件消失 解决办法,在paintevent结尾加上这条语句:QPushButton::paintEvent(event); void MyButton::paintEvent(QPaintEvent *event) {QPushButton::paintEvent(event); } 这里QPushButton不能写成Q…...
安全基础-互联网技术基础
互联网技术基础 概述:计算机网络、网络协议、HTTP协议、前端与后端技术、Web服务器、数据库以及浏览器等 目录 互联网技术基础前言一、计算机网络定义二、网络协议和协议分层1.OSI七层模型2.TCP/IP四层模型 三、HTTP协议1、HTTP协议的特点2、HTTP请求3、HTTP响应4、…...
【Rust自学】11.9. 单元测试
喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.9.1. 测试的分类 Rust把测试分为两类,一个是单元测试,一个是集成…...
了解Node.js
Node.js是一个基于V8引擎的JavaScript运行时环境,它允许JavaScript代码在服务器端运行,从而实现后端开发。Node.js的出现,使得前端开发人员可以利用他们已经掌握的JavaScript技能,扩展技能树并成为全栈开发人员。本文将深入浅出地…...
二十三种设计模式-原型模式
原型模式(Prototype Pattern)是一种创建型设计模式,它通过拷贝现有的实例来创建新的实例,而不是通过新建实例。这种方式可以避免复杂的构造过程,同时还能保持对象的创建和使用分离,提高系统的灵活性和扩展性…...
蓝桥与力扣刷题(66 加一)
题目: 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入…...
Markdown 分级标题
Markdown 分级标题 1. 前言2. 语法详解2.1 SeText风格2.2 Atx风格 3. 使用场景及实例4. 小结5. 其他风格5. 其他文章快来试试吧🎈 Markdown 分级标题 👈点击这里也可查看 1. 前言 关于 Markdown 的分级标题,官方给出了如下定义: …...
回归预测 | MATLAB基于RF-Adaboost多输入单输出回归预测
回归预测 | MATLAB基于RF-Adaboost多输入单输出回归预测 目录 回归预测 | MATLAB基于RF-Adaboost多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 回归预测 | MATLAB基于RF-Adaboost多输入单输出回归预测。 1.Matlab实现RF-Adaboost随机森林集成学习…...
字符串相关类之可变字符序列:StringBuffer、StringBuilder
前言: 小编最近找了份兼职,时间比较紧张 但不影响继续日更一篇,我们继续一起进步吧!!! 我们一直都是以这样的形式,让新手小白轻松理解复杂晦涩的概念, 把Java代码拆解的清清楚楚&a…...
git提交
基本流程:新建分支 → 分支上开发(写代码) → 提交 → 合并到主分支 拉取最新代码因为当前在 master 分支下,你必须拉取最新代码,保证当前代码与线上同步(最新),执行以下命令:bashgit pull orig…...
ceph osd df 输出详解
ceph osd df 命令用于显示 Ceph 集群中各个 OSD(对象存储守护进程)的详细信息。以下是输出中各列的含义: ID:OSD 的唯一标识符。 CLASS:OSD 所属的设备类别,例如 SSD、HDD 等。 WEIGHT:OSD 的…...
Unity3D实现自定义河流路径或泥石流路径
系列文章目录 untiy工具 文章目录 系列文章目录👉前言👉一、效果如下👉二、编辑效果如下👉三、简单使用Tool👉四、实现水流从上到下流下来的效果👉壁纸分享👉总结👉前言 此工具是一个插件,插件很好用,可以根据地形编辑河流的走向以及宽度,也可以发挥想象编辑…...
【数据结构】双向链表
目录 1. 双向链表 1.1特性 1.2双向链表相关操作 1.3 双向循环链表 1. 双向链表 1.1特性 逻辑结构:线性结构 存储结构:链式存储 操作:增删改查 typedef int datatype; typedef struct node {datatype data; //数据域struct node …...
android进入fastboot
安装windows驱动。android进入fastboot模式后,需要Windows驱动来跟adb通信,所以需要预先安装Windows usb驱动,否则进入fastboot模式后,无法使用adb连接手机。 下载网址:https://developer.android.com/studio/run/win-…...
verilogHDL仿真详解
前言 Verilog HDL中提供了丰富的系统任务和系统函数,用于对仿真环境、文件操作、时间控制等进行操作。(后续会进行补充) 正文 一、verilogHDL仿真详解 timescale 1ns/1ps //时间单位为1ns,精度为1ps, //编译…...
见微知著:Tripo 开创 3D 生成新时代
关于 VAST VAST 成⽴于 2023 年 3 ⽉,是⼀家致⼒于通⽤ 3D 大模型研发的 AI 公司,公司⽬标是通过打造⼤众级别的 3D 内容创作⼯具,建⽴ 3D 的 UGC 内容平台,让基于 3D 的空间成为⽤户体验、内容表达、提升新质⽣产⼒的关键要素。 2024 年初,VAST 推出数⼗亿参数级别的 3…...
【AI自动化渗透】大模型支持的自动化渗透测试,看蚂蚁和浙大的
参考文章: https://mp.weixin.qq.com/s/WTaO54zRxtNMHaiI1tfdGw 最近,美国西北大学,浙江大学,蚂蚁集团的一些专家学者联手发表了一篇论文,介绍了一个PentestAgent的方案,实现了渗透测试自动化。 01 技术方案 图的字…...
React 中事件机制详细介绍:概念与执行流程如何更好的理解
React 的事件机制是一个非常重要的概念,它涉及到 React 如何处理用户的交互事件。React 的事件系统与传统的 DOM 事件系统有所不同,它在底层使用了事件委托和合成事件(Synthetic Events)来优化性能。下面,我们将从 Rea…...
时序数据库InfluxDB—介绍与性能测试
目录 一、简述 二、主要特点 三、基本概念 1、主要概念 2、保留策略 3、连续查询 4、存储引擎—TSM Tree 5、存储目录 四、基本操作 1、Java-API操作 五、项目中的应用 六、单节点的硬件配置 七、性能测试 1、测试环境 2、测试程序 3、写入测试 4、查询测试 一…...
解决idea中无法拖动tab标签页的问题
1、按 Ctrl Alt S 打开设置,找到路径 File | Settings | Appearance & Behavior | Appearance 2、去掉勾选 Drag-and-drop with Alt pressed only 即可...
ffplay 命令行 从视频第N帧开始读取 ffmpeg 命令行 提取第N帧图片
ffmpeg中没有直接的命令读取第N帧 但是可以通过 t N/framerate 来获取到具体第N帧的时间 然后用 -ss t进行跳转。 比如帧率(frame rate)为24fps的视频G:/1/1.mp4文件从第1000帧开始进行播放,先计算出时间为 t 41.66666 ffplay -i G:/1/1.…...
【web靶场】之upload-labs专项训练(基于BUUCTF平台)
前言 该靶场,是通过平台BUUCTF在线评测中的靶场进行的,基于linux搭建的 当然若是想要该靶场,可以采用github上的醒目,点击后面文字即可访问c0ny1/upload-labs: 一个想帮你总结所有类型的上传漏洞的靶场 或者本人分享在网盘中&a…...
HTML5 Audio(音频)
HTML5 Audio(音频) HTML5 的 <audio> 元素是一个重要的革新,它为网页开发者提供了一种简单的方式来嵌入音频内容。在这篇文章中,我们将探讨 HTML5 <audio> 元素的特性、用法、浏览器兼容性,以及如何通过 JavaScript 和 CSS 对其进行控制和定制。 1. HTML5 <…...
go语言学习
字典(映射)类型 (Map) 以键值对为元素去存储元素 Map的特点: 键不能重复。 键必须是(int,bool,float,string,array)这些可以哈希的 (如果自定义类型想要作为键,需要自…...
OpenCV相机标定与3D重建(53)解决 Perspective-3-Point (P3P) 问题函数solveP3P()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 根据 3 个 3D-2D 点对应关系找到物体的姿态。 cv::solveP3P 是 OpenCV 中的一个函数,用于解决 Perspective-3-Point (P3P) 问题。该问…...
【西北工业大学主办 | EI检索稳定 | 高H值专家与会报告】2025年航天航空工程与材料技术国际会议(AEMT 2025)
2025 年航天航空工程与材料技术国际会议(AEMT 2025)将于2025年2月28日至3月2日在中国天津召开。本届会议由西北工业大学主办,由北京航空航天大学、北京理工大学作为支持单位加入,AEIC 学术交流中心协办。 AEMT 2025 旨在汇聚来自全…...
卷积神经02-CUDA+Pytorch环境安装
卷积神经02-CUDAPytorch环境安装 在使用Python进行pytorch的使用过程中遇到各种各样的版本冲突问题,在此进行记录 0-核心知识脉络 1)根据自己电脑的CUDA版本安装对应版本的Pytorch,充分的使用GPU性能2)电脑要先安装【CUDA ToolKi…...
监听器与RBAC权限模型
目录 1、监听器ServletContextListener1.1、主要用途1.2、接口方法1.3、实现步骤1.4、示例代码1.5、使用场景 2、德鲁伊数据源2.1、主要特性2.2、配置 DruidDataSource 3、RBAC权限模型3.1、什么是RBAC3.2、RBAC 的核心概念3.3、RBAC 的优势3.4、RBAC 的实现步骤 1、监听器Serv…...
根据浏览器的不同类型动态加载不同的 CSS 文件
实现思路: 安装并引入 vue 项目相关的 CSS 文件:首先确保你有为不同浏览器准备了不同的 CSS 文件(例如,style-chrome.css,style-firefox.css,style-ie.css 等)。 在 index.js 中根据浏览器类型…...
[ComfyUI]接入Google的Whisk,巨物融合玩法介绍
一、介紹 前段时间,谷歌推出了一个图像生成工具whisk,有一个很好玩的图片融合玩法,分别提供三张图片,就可以任何组合来生成图片。 最近我发现有人开发了对应的ComfyUI插件,对whisk做了支持,就来体验了下&#…...
3DGabor滤波器实现人脸特征提取
import cv2 import numpy as np# 定义 Gabor 滤波器的参数 kSize 31 # 滤波器核的大小 g_sigma 3.0 # 高斯包络的标准差 g_theta np.pi / 4 # Gabor 函数的方向 g_lambda 10.0 # 正弦波的波长 g_gamma 0.5 # 空间纵横比 g_psi np.pi / 2 # 相位偏移# 生成 Gabor 滤…...
一文流:Maven精讲
一文流系列是作者苦于技术知识学了-忘了,背了-忘了的苦恼,决心把技术知识的要点一笔笔✍️出来,一图图画出来,一句句讲出来,以求刻在🧠里。 该系列文章会把核心要点提炼出来,以求掌握精髓&#…...
10.STM32F407ZGT6-内部温度传感器
参考: 1.正点原子 前言: 本笔记的主要目的和意义就是,再次练习ADC的使用。 32.1 内部温度传感器简介 STM32F407 有一个内部的温度传感器,可以用来测量 CPU 及周围的温度(TA)。对于STM32F407 系列来说,该温度传感器在…...
软件测试预备知识④—NTFS权限管理、磁盘配额与文件共享
在软件测试的实际环境搭建与管理过程中,了解和掌握NTFS权限管理、磁盘配额以及文件共享等知识至关重要。这些功能不仅影响系统的安全性和稳定性,还对测试数据的存储、访问以及多用户协作测试有着深远的影响。 一、NTFS权限管理 1.1 NTFS简介 NTFS&am…...
Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能
Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能 基于SpringBoot3Vue3前后端分离的Java快速开发框架 项目简介:基于 JDK 17、Spring Boot 3、Spring Security 6、JWT、Redis、Mybatis-P…...
科研绘图系列:R语言绘制Y轴截断分组柱状图(y-axis break bar plot)
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍特点意义加载R包数据下载导入数据数据预处理画图输出总结系统信息介绍 Y轴截断分组柱状图是一种特殊的柱状图,其特点是Y轴的刻度被截断,即在某个范围内省略了部分刻度。这种图表…...
省森林防火应急指挥系统
森林防火形势严峻 我国森林防火形势十分严峻,森林火灾具有季节性强、发现难、成灾迅速等特点,且扑救难度大、影响范围广、造成的损失重。因此,构建森林防火应急指挥系统显得尤为重要。 系统建设模式与架构 森林防火应急指挥系统采用大智慧…...