第一周 题目练习(queue)洛谷P1886 P1714 P2058

发布时间:2026/9/30 9:13:36

第一周 题目练习(queue)洛谷P1886 P1714 P2058
涉及 队列 单调队列 滑动窗口 单调队列队尾进队出队 队头 出队 前提单调 (快速获取最大值最小值) 滑动窗口维护一段连续区间 定长 区间长固定 不定长 区间长度动态变化P1886 【模板】单调队列 / 滑动窗口涉及单调队列滑动窗口定区间解题过程其实这个模板题是第二次看了 但是还是刚看到题目 之后 还是蛮模糊的平时看到数组内求什么最大值 最小值都是暴力直接循环for(intl1;lk-1n;l){intminvINT_MAX;for(intil;ilk-1;i)minvmin(minv,a[i]);coutminv ;}像这样直接去遍历无疑 肯定是会超限的 那么就应该需要去优化了 也就是 滑动窗口 去维护一段区间 再借助单调队列 去维护区间内的最值for(ll i1;in;i){while(hta[q[t]]a[i]){t--;}q[t]i;while(q[h]i-k1){h;}if(ik){couta[q[h]] ;}}在维护区间最小值时 维护队列内下标对应的数值 单调递增核心1.去队尾维护单调性在向队列内加入新元素时如果队尾元素对应的数值 新加入的下标对应的数值 说明队尾旧元素不可能成为后续窗口最小值直接弹出队尾直到队尾数值新加入的数值即新加入的数值永远不可能成为最小值再把i入队2.队头剔除越界元素若队头下标不在当前窗口范围 i-k1队头下标i就从队头弹出此时队头就是当前窗口最小值的下标。代码实现#includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define ull unsigned long long #define fi first #define se second using namespace std; int main() { IOS ll k,n; ll h,t; cinnk; vectorlla(n5); vectorllq(n5); for(int i1;in;i) { cina[i]; } h1;t0; for(ll i1;in;i) { while(hta[q[t]]a[i]) { t--; } q[t]i; while(q[h]i-k1) { h; } if(ik) { couta[q[h]] ; } } coutendl; h1;t0; for(ll i1;in;i) { while(hta[q[t]]a[i]) { t--; } q[t]i; while(q[h]i-k1) { h; } if(ik) { couta[q[h]] ; } } // coutfixedsetprecision(x) ; return 0; }[P2058 NOIP 2016 普及组] 海港 - 洛谷# P2058 [NOIP 2016 普及组] 海港涉及点 滑动窗口普通队列解题过程已经知道t是严格升序 题目给出船只到达时间 t 单调递增采用滑动窗口 普通队列实现队列queue先进先出 将t 与 国籍x捆绑到一起(利用结构体)q.push({t,x});先用 cnt 记录当前窗口内国籍 x 的乘客数量kind 存窗口内不同国籍总数若入队前 cnt[x]0说明是新增国籍kind 执行 cnt[x]然后入队完成后 通过一个while循环去清理过期乘客 ti - 86400 tp ti利用滑动窗口去查 while(!q.empty()q.front().tt-N)若队首乘客满足 q.front().t ≤ t - 86400 表示超出 24 小时窗口 取出队首国籍 xx cnt[xx]–若 cnt[xx]0窗口内不存在该国籍kind-- 弹出队首代码实现//P2058 #includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define ull unsigned long long #define fi first #define se second using namespace std; const int N86400; const int M1e55; struct ship{ ll t; ll x; }; ll cnt[M]; int main() { IOS ll n; cinn; queueshipq; ll kind0; for(ll i1;in;i) { ll t,x; ll k; cintk; for(ll j1;jk;j) { cinx; q.push({t,x}); if(!cnt[x]) { kind; } cnt[x]; } while(!q.empty()q.front().tt-N) { ll xxq.front().x; cnt[xx]--; if(!cnt[xx])kind--; q.pop(); } coutkindendl; } // coutfixedsetprecision(x) ; return 0; }P1714 切蛋糕 - 洛谷P1714 切蛋糕涉及 前缀和 单调队列 滑动窗口最值不定长区间解题过程由题目可以看出是 找最大区间和6 31 -2 3 -4 5 -6 a[i]1 -1 2 -2 3 -3 sum[i]起点i为4时(1km)1 -2 3 (-4) 5 -6 a[i]k1 结果为sum[i]-sum[i-1]-41 -2 (3 -4) 5 -6 a[i]k2 结果为sum[i]-sum[i-2]-11 (-2 3 -4) 5 -6 a[i]k3 结果为sum[i]-sum[i-3]-3…km 结果为sum[i]-sum[i-m]sum[R]-sum[L-1] 区间长度为 1R-L1msum[i]-sum[l] 假定lL-1 1i-lm即区间范围 i-mli-1ansmax(sum[i]-sum[l]) (i-mli-1)等价于anssum[i]-min(sum[l]) 暴力 解题范围太大超限写过上面两道题之后 可以说 找最值 肯定还是单调队列滑动窗口最快了找最大值 -单调队列滑动窗口-用一个queue去存下标代码实现//P1714 #includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define ull unsigned long long #define fi first #define se second using namespace std; ll ans-233333333; int main() { IOS ll n,m; cinnm; vectorllp(n3); vectorllsum(n10); dequellq; for(ll i1;in;i) { cinp[i]; sum[i]sum[i-1]p[i]; } q.push_back(0);// 初始放入下标0sum[0]0作为起点 for(ll i1;in;i) {//移除队头 下标超出i-m范围长度超过m while(q.front()mi) // while (!(li-m)) { q.pop_front(); } //sum[i] - 最小sum[q.front()] ansmax(ans,sum[i]-sum[q.front()]); //维护单调递增队列队尾前缀和 当前sum[i]就弹出 找最小值 while(!q.empty()sum[q.back()]sum[i]) { q.pop_back(); } q.push_back(i); } coutansendl; // coutfixedsetprecision(x) ; return 0; }

相关新闻

工业以太网PHY芯片TLK111硬件设计与软件配置全解析

工业以太网PHY芯片TLK111硬件设计与软件配置全解析

2026/9/30 14:31:20

1. 项目概述与核心价值在工业自动化、电机控制和各类嵌入式网络设备的设计中,以太网物理层收发器(PHY)的选择往往是决定系统通信稳定性、实时性和可靠性的基石。它不像上层协议栈那样引人注目,却实实在在地负责着数据从数字比特流…

UE5性能优化实战:用Stat命令与Unreal Insights精准定位卡顿根源

UE5性能优化实战:用Stat命令与Unreal Insights精准定位卡顿根源

2026/9/30 14:29:55

1. 项目概述:从“感觉卡”到“数据卡”的思维转变 做UE5项目,尤其是开放世界或者高画质手游,最怕的就是测试时那句“这里有点卡”。这个“卡”字背后,可能藏着渲染线程瓶颈、游戏逻辑超支、Draw Call爆炸、GPU指令排队等几十种原因…

高通FAS调度技术:提升移动设备性能与能效

高通FAS调度技术:提升移动设备性能与能效

2026/8/23 4:18:21

1. 高通处理器FAS调度技术解析最近在移动设备性能优化领域,FAS调度技术引起了广泛关注。作为一名长期从事移动设备性能调优的工程师,我发现这套调度机制在高通平台上展现出惊人的潜力——既能提升游戏帧率,又能降低日常使用功耗。不同于传统的…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/29 22:00:59

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/28 16:01:49

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/28 2:15:29

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/29 19:20:49

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/28 3:58:00

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/30 8:20:32

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/28 16:01:48

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/28 5:05:21

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/28 16:01:48

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…