当前位置:网站首页>单调队列模板 滑动窗口
单调队列模板 滑动窗口
2022-08-02 04:25:00 【一条小小yu】
题目描述
有一个长为 nn 的序列 aa,以及一个大小为 kk 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。
例如:
The array is [1,3,-1,-3,5,3,6,7][1,3,−1,−3,5,3,6,7], and k = 3k=3。

输入格式
输入一共有两行,第一行有两个正整数 n,kn,k。 第二行 nn 个整数,表示序列 aa
输出格式
输出共两行,第一行为每次窗口滑动的最小值
第二行为每次窗口滑动的最大值
输入输出样例
输入 #1复制
8 3 1 3 -1 -3 5 3 6 7
输出 #1复制
-1 -3 -3 -3 3 3 3 3 5 5 6 7
说明/提示
【数据范围】
对于 50\%50% 的数据,1 \le n \le 10^51≤n≤105;
对于 100\%100% 的数据,1\le k \le n \le 10^61≤k≤n≤106,a_i \in [-2^{31},2^{31})ai∈[−231,231)。
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
typedef long long ll;
typedef double db;
int all, k;
struct node
{
int n, m;
} a[maxn];
deque<node> q;
void BIG(int all, int k)
{
for (int i = 1; i <= all; ++i)
{
while (!q.empty() && a[i].m >= q.front().m )q.pop_front(); // 求最小的
q.push_front(a[i]);
while (q.back().n <= i - k) q.pop_back();
if (i >= k) cout<<q.back().m<<" ";
}
q.clear();
}
void LOW(int all, int k)
{
for (int i = 1; i <= all; ++i)
{
while (!q.empty() && a[i].m <= q.front().m) q.pop_front(); // 求最大的
q.push_front(a[i]);
while (q.back().n <= i - k) q.pop_back();
if (i >= k) cout<<q.back().m<<" ";
}
q.clear();
}
int main()
{
cin>>all>>k;
for (int i = 1; i <= all; ++i) cin>>a[i].m, a[i].n = i;
LOW(all, k);
cout<<endl;
BIG(all, k);
return 0;
}
边栏推荐
猜你喜欢

ROS visualization of 3D target detection

The line chart with square PyQt5_pyqtgraph mouse

通关剑指 Offer——剑指 Offer II 008. 和大于等于 target 的最短子数组

OpenPCDet environment configuration of 3 d object detection and demo test

互动投影墙深受展览展示喜爱的原因分析

How to decrypt worksheet protection in Excel

一次跳出最外层循环

PDF文件转换格式

【STM32】ADC采集光敏数据(不看库函数手册进行配置)

Qt FAQ
随机推荐
力扣练习——38 分割回文串
高等数学(第七版)同济大学 总习题三(后10题) 个人解答
日本痴汉打赏女主播1.5亿,结果。。。
力扣练习——单词搜索
DOM系列之 click 延时解决方案
我们擅长的地方很多
Scala basics [common method supplement, pattern matching]
其他重要协议(DNS,ICMP,NAT,交换机)
【每日一题】1374. 生成每种字符都是奇数个的字符串
CODESYS指针型变量编程应用(配方)
alibaba数据同步组件canal的实践整理
学内核之五:问题一,关于上下文切换
How to save a section of pages in a PDF as a new PDF file
C - The Domino Effect(dfs+回溯)
6个月测试经验,面试跳槽狮子大开口要18K,只会点点点,给我整无语了。。
Camtasia 2022简体中文版屏幕录像和视频编辑软件
开放原子开源峰会落幕,百度超级链牵头成立XuperCore开源工作组
C# Thread IsBackground作用
如何解决QByteArray添加quint16双字节时错误?
力扣练习——37 复原IP地址