新闻详情

新闻详情

首页 / 资讯中心 / 详情

queue函数的应用

发布时间:2026/9/3 22:10:29来源:尧图网络
queue函数的应用
一.概况queue函数今天主要学习了STL函数中的queue函数如何使用我在之前的博客中已经写过,在这里请点击下面让我们来看具体题目二.题目来源洛谷 P1886 P1714 P2058力扣 225牛客 NC50528三.题目具体分析1洛谷P1886 牛客[NC50528]这两道题一模一样这道题是一道标准的滑动窗口题运用队列只能在一段插入和在另一端删除从而获得窗口的最大值和最小值AC代码如下#includebits/stdc.h using namespace std; #define int long long signed main(){ ios::sync_with_stdio(false); cin.tie(0); int n,k; cinnk; int a[n1]; for(int i1;in;i)cina[i]; dequeintq; //求最小值 for(int i1;in;i){ //当前元素比队尾元素小删除队尾元素 while(!q.empty()a[i]a[q.back()])q.pop_back(); q.push_back(i);//入队 while(q.front()i-k)q.pop_front();//缩小滑动窗口确保窗口大小不超过k if(ik)couta[q.front()] ;//此时队首就是当前窗口最小值 } coutendl; q.clear();//清除 //求最大值 for(int i1;in;i){ //当前元素比队尾元素大删除队尾元素 while(!q.empty()a[i]a[q.back()])q.pop_back(); q.push_back(i);//入队 while(q.front()i-k)q.pop_front(); if(ik)couta[q.front()] ;//此时队首就是当前窗口最大值 } coutendl; return 0; }这道题相对好理解可以当做一个固定的滑动窗口模版来用。2洛谷P2058 海港核心条件输入的船只到达时间 t 严格递增关键天然满足滑动窗口单调性需求处理第 i 艘船时统计区间 (t - 86400 ,t] 所有乘客里不同国籍总数队列queue保存每一位乘客的 (到达时间t国籍x) 按到达先后排队计数数组/桶 cnt[] cnt[x] 当前窗口内国籍 x 的人数变量ans记录当前窗口不同国籍数量。完整流程每一艘船处理步骤读入当前船时间 t 、乘客数量 k 和所有乘客国籍将船上所有乘客 (t, x) 逐个压入队列如果 cnt[x]0 说明窗口新增国籍 ans cnt[x] 清理过期乘客窗口左端弹出循环判断队首乘客时间 q.front().t t - 86400 超出24小时取出队首国籍 x0 cnt[x0]-- 如果 cnt[x0]0 这个国籍没人了 ans-- 队首弹出清理完成后直接输出 ans 。AC代码如下#includebits/stdc.husing namespace std;structnode{intx,t;}h;//定义结构体queuenodeq;//用于储存intans0,num[100005];intmain(){ios::sync_with_stdio(false);cin.tie(0);intn;cinn;while(n--){intt,k;cintk;for(inti0;ik;i){intx;cinx;num[x];q.push({x,t});//入队if(num[x]1)ans;//出现新的国家总数加1}//清理过期记录滑动窗口核心for(hq.front();q.size()t-h.t86400;q.pop(),hq.front()){num[h.x]--;if(num[h.x]0)ans--;}coutansendl;}return0;}(3)洛谷P1714 切蛋糕题意给定长度 n 的数组求长度不超过 m 的连续子数组最大和。数据范围 n ≤ 5e5 需要 O(n) / O(n log n) 算法暴力枚举会超时。核心思路预处理前缀和数组 s s[0]0s[i] p₁p₂…pᵢ区间 [l,r] 和 s[r] - s[l-1]约束子数组长度 r-l1 ≤ m ⇒ l-1 ≥ r-m 。对固定右端点 r我们要找 r-m ≤ j ≤ r-1 范围内最小的 s[j]使得 s[r]-s[j] 最大。使用单调递增队列滑动窗口最小值维护队列保存 j 下标满足下标在区间 [r-m, r-1]队列内部 s[j] 单调从小到大每次取队首就是区间最小 s[j] 计算答案。AC代码如下#includebits/stdc.husing namespace std;dequeintdp;intmain(){intn,k;cinnk;vectorlonglongs(n1);s[0]0;for(inti1;in;i){longlongx;cinx;s[i]s[i-1]x;}dp.push_back(0);longlongans-1e18;//极小值初始化for(inti1;in;i){//移除窗口越界下标while(!dp.empty()dp.front()i-k)dp.pop_front();//更新最大段子和ansmax(ans,s[i]-s[dp.front()]);//维护单调递增队列while(!dp.empty()s[i]s[dp.back()])dp.pop_back();dp.push_back(i);}coutansendl;return0;}4力扣 225这道题是使用两个队列实现一个后入先出LIFO的栈并支持普通栈的全部四种操作比较简单AC代码如下#includequeue using namespace std; class MyStack { private: queueint q1, q2; public: // 入栈直接存入主队列 void push(int x) { q1.push(x); } // 出栈返回栈顶元素 int pop() { // 将q1前n-1个元素转移到q2 while(q1.size() 1) { q2.push(q1.front()); q1.pop(); } // q1.front()就是栈顶 int res q1.front(); q1.pop(); // 把q2元素倒回q1 while(!q2.empty()) { q1.push(q2.front()); q2.pop(); } return res; } // 获取栈顶不删除 int top() { while(q1.size() 1) { q2.push(q1.front()); q1.pop(); } int res q1.front(); q2.push(res); // 栈顶元素不能丢先存入q2 q1.pop(); // 倒回q1 while(!q2.empty()) { q1.push(q2.front()); q2.pop(); } return res; } bool empty() { return q1.empty(); } };分享到这里就结束了
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

OpenBLAS 0.3.9完全指南:从文件结构到VS与MinGW配置及性能优化 2026/9/3 22:10:09

OpenBLAS 0.3.9完全指南:从文件结构到VS与MinGW配置及性能优化

简介:OpenBLAS 0.3.9 是一套面向 Windows 10 64 位平台预编译的高性能线性代数库,专注为 C/C 开发者提供 BLAS 与 LAPACK 接口,矩阵乘法、线性方程组求解、特征值计算等场景均可直接调用,适合从事科学计算、机器学习、计算机视觉或…

阅读更多 →
基于PyTorch的单通道脑电睡眠分期:从数据预处理到模型部署全流程 2026/9/3 22:10:09

基于PyTorch的单通道脑电睡眠分期:从数据预处理到模型部署全流程

简介:本资源是一个基于PyTorch实现的单通道脑电信号(EEG)睡眠分期系统,面向高校人工智能、生物医学工程及计算机相关专业高年级本科生与研究生,解决神经生理信号自动分类中的模型构建与工程落地问题。项目采用CNN-RNN混…

阅读更多 →
基于Python的数据分析系统:从KL8彩票数据挖掘到预测辅助实践 2026/9/3 22:10:09

基于Python的数据分析系统:从KL8彩票数据挖掘到预测辅助实践

简介:这是一款面向彩票数据分析初学者与个人学习者的快乐8(KL8)专用分析预测工具,解决爱好者手动整理历史数据、计算统计指标、识别号码规律等低效痛点。资源包共75个文件,含36个Python核心模块(覆盖数据采…

阅读更多 →
小波神经网络在交通流量预测中的MATLAB实现与优化 2026/9/3 22:10:09

小波神经网络在交通流量预测中的MATLAB实现与优化

简介:本资源是一套面向本硕博及科研教学人员的MATLAB小波神经网络实践教学包,聚焦交通流量预测这一典型时序建模问题,助力用户掌握小波神经网络算法原理与工程实现。压缩包共6个文件(3个核心M函数、1段操作录像AVI、1个预存交通数…

阅读更多 →
Lv德训鞋真假鉴别指南:四百元档莆田鞋与正品差距全解析 2026/9/3 22:10:09

Lv德训鞋真假鉴别指南:四百元档莆田鞋与正品差距全解析

1. 写在前面:这双鞋到底值不值?最近在球鞋圈和潮流圈里,有一类鞋子的讨论热度一直居高不下,就是“德训鞋”。而 Lv(Louis Vuitton,路易威登)这双足球鞋风格的德训鞋,更是被不少博主拿…

阅读更多 →
NB虚拟实验如何改变初中物理课堂?从电学到光学实操经验全分享 2026/9/3 22:07:06

NB虚拟实验如何改变初中物理课堂?从电学到光学实操经验全分享

简介:面向初中物理教学的虚拟实验资源,整合了力学、热学、光学、电学、声学、能量转换、简单机械等模块,并包含实验测量、设计分析与安全操作内容,适合课堂演示、课后自学及实验条件有限地区的辅助教学。压缩包共921个文件&#x…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞