洛谷 P1886 滑动窗口 /【模板】单调队列

news2024/11/20 2:31:50

滑动窗口 /【模板】单调队列

题目描述

有一个长为 n n n 的序列 a a a,以及一个大小为 k k k 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。

例如:

The array is [ 1 , 3 , − 1 , − 3 , 5 , 3 , 6 , 7 ] [1,3,-1,-3,5,3,6,7] [1,3,1,3,5,3,6,7], and k = 3 k = 3 k=3

输入格式

输入一共有两行,第一行有两个正整数 n , k n,k n,k
第二行 n n n 个整数,表示序列 a a a

输出格式

输出共两行,第一行为每次窗口滑动的最小值
第二行为每次窗口滑动的最大值

样例 #1

样例输入 #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\% 50% 的数据, 1 ≤ n ≤ 1 0 5 1 \le n \le 10^5 1n105
对于 100 % 100\% 100% 的数据, 1 ≤ k ≤ n ≤ 1 0 6 1\le k \le n \le 10^6 1kn106 a i ∈ [ − 2 31 , 2 31 ) a_i \in [-2^{31},2^{31}) ai[231,231)

解题思路

单调队列的模板

代码

#include<iostream>
#include<deque>
using namespace std;

struct node
{
    int val, pos;
};
int main()
{
    ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);

    // 区间为 [i-k,i]
    int n, k;
    cin >> n >> k;
    node num[n+1];
    deque<node>qmin, qmax;
    for(int i=1;i<=n;i++)
    {
        cin >> num[i].val;
        num[i].pos = i;
    }
    for(int i=1;i<=n;i++)
    {
        while(!qmin.empty() && qmin.back().val > num[i].val) qmin.pop_back();
        qmin.push_back(num[i]);
        if(qmin.front().pos == i-k) qmin.pop_front();
        if(i>=k) cout << qmin.front().val << " ";
    }
    cout << endl;
    for(int i=1;i<=n;i++)
    {
        while(!qmax.empty() && qmax.back().val < num[i].val) qmax.pop_back();
        qmax.push_back(num[i]);
        if(qmax.front().pos == i-k) qmax.pop_front();
        if(i>=k) cout << qmax.front().val << " ";
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/194566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

辨别三星内存条的真假

目录前言一、三星内存为什么水深&#xff1f;二、通过物理手段辨别1.包装2.日期3.是否透光4.颜色5.电阻颜色6.颗粒丝印&#xff08;重点&#xff09;7.其他标签或字迹结语前言 本文截止2023.2.2&#xff0c;针对笔记本内存条 省流&#xff1a;直接JD自营 最近随手在tb买了条三星…

快速掌握任意 Android 应用的抓包

抓包是流量分析的基础&#xff0c;也是安全研究重要的一环。抓包软件有很多种&#xff0c;如 Burpsuite、mitmproxy 以及 Fiddle&#xff0c;抓包方式常见的有设置系统代理、AP 热点抓包、透明代理等。不同方式有不同优缺点&#xff0c;也有不同的应用场景。相信很多安全研究者…

Google Analytics | 学习笔记

一.简介 1.什么是GA&#xff1f; 是谷歌开发的一款分析网页流量的工具&#xff0c;可以帮助网站解决数据分析与统计的问题&#xff0c;并且将这些数据可视化展现报告出来&#xff0c;帮助网站商家更好的分析受众&#xff0c;流量等&#xff0c;从而更好地进行运营网站营销等 …

UV统计的学习

12.1 、UV统计-HyperLogLog 首先我们搞懂两个概念&#xff1a; UV&#xff1a;全称Unique Visitor&#xff0c;也叫独立访客量&#xff0c;是指通过互联网访问、浏览这个网页的自然人。1天内同一个用户多次访问该网站&#xff0c;只记录1次。 PV&#xff1a;全称Page View&am…

大龄考生上岸浙大MPA的“曲线救国”策略

先来介绍一下我个人的背景把&#xff0c;我是通过参加浙大提前批面试获得A资格&#xff0c;笔试接近两百分上岸MPA项目的。说起来我的个人优势真的不多&#xff0c;只是一个普通一本&#xff0c;不是什么211/985的名校&#xff0c;所以就对浙大有一种向往&#xff0c;使得自己的…

【数据结构】1.4 算法和算法分析

文章目录1. 算法的定义及特性算法的特性算法设计的要求2. 算法的时间复杂度分析算法时间复杂度的基本方法算法时间复杂度分析例题算法时间复杂度的计算3. 算法的空间复杂度1. 算法的定义及特性 算法的定义 对特定问题求解方法和步骤的一种描述&#xff0c;它是指令的有限序列…

C++:String类应用

string对象的构造 //string() string(const string &s) string(const char *s) string(first,last) void TestString01() {string s1;string s2("hello");string s3(s2);const char* p "hello";string s4(p, p 2);cin >> s1;cout << …

微信小程序 Springboot旅游景点酒店预订管理系统 java

功能模块划分 &#xff08;1&#xff09;用户信息管理模块 用户管理模块主要是对用户信息进行管理。包括&#xff1a; 用户的注册&#xff1a;实现用户信息的注册&#xff0c;用户注册是的信息校验&#xff0c;用户信息的保存。 用户的登录&#xff1a;检验用户是否为该网站的合…

如何打造优秀高绩效的团队?Google亚里士多德计划揭开谜底!

研究人员通过亚里士多德计划开展研究&#xff0c;通过对大量团队效率进行定性&#xff08;360主观评估&#xff09;与定量&#xff08;产出成果度量&#xff09;结合的统计评估&#xff0c;筛选出左右着团队动态的五个关键支柱&#xff1a;心理安全、可靠性、结构和清晰度、意义…

Nginx与Upstream之间产生大量TIME_WAIT连接的解决办法

1. 现象 Nginx反向代理了一个Java服务&#xff0c;QPS大概是200&#xff0c;问题发生时的Nginx配置&#xff1a; location / {proxy_pass http://192.168.3.4:18600; }在上游Java服务器上可以观察到大量&#xff08;约2000个&#xff09;的TIME_WAIT状态的网络连接 从Nginx…

一位十年测试老前辈的修炼之路,希望能帮你点清现实

对于刚进入软件测试工作岗位的新人&#xff0c;如何快速、健康的在职业道路上成长&#xff0c;作者谈了几点自己看法&#xff1a; 1、兴趣是最好的老师 对于软件测试工作&#xff0c;通常是比较枯燥的&#xff0c;如果没有兴趣很难做到持久。 我最近参与了一个软件测试项目&a…

Plecs电力电子仿真专业教程-第一季 第三节 Plecs界面介绍

Plecs电力电子仿真专业教程-第一季 第三节 Plecs界面介绍 Plecs仿真软件主要包含两个部分&#xff1a;元件库窗口和电路图编辑窗口。元件库窗口主要用于选择仿真所用到的电子元器件&#xff0c;通过拖拽的方式可以将所需要的元器件放置在主电路图窗口中。 主界面窗口如下&…

网络类型、路由封装实验

实验1. 拓扑搭建2. 配置各路由器物理接口IP地址边界路由器到ISP通测试PAP认证CHAP认证R3与R5间使用HDLC封装R1与R4为GRE环境R1、R2、R3为MGRE环境私有网络基于RIP全网可达给PC配置IP地址测试ping通性环境&#xff1a;华为模拟器 实验要求 1. 拓扑搭建 2. 配置各路由器物理接口…

【目标检测】MMYOLO | 如何使用 MMYOLO 训练模型

文章目录一、MMYOLO 简介1.1 MMYOLO 的安装和简单训练1.2 详细配置参数1.3 构建 Cat 数据集的 Config 文件1.3.1 数据集分布可视化1.3.2 Anchor-based 方法中 anchor 尺寸的优化1.3.3 可视化数据处理二、MMYOLO 的框架结构2.1 以 YOLOv5 为例来说明 MMYOLO 的框架结构2.1.1 Bac…

AcWing 1077. 皇宫看守(树形DP + 状态机DP)

AcWing 1077. 皇宫看守&#xff08;树形DP 状态机DP&#xff09;一、问题二、分析1、思路分析2、状态表示3、状态转移4、循环设计5、初末状态三、代码一、问题 二、分析 1、思路分析 在讲解这道题之前&#xff0c;大家需要对状态机DP有一定的了解&#xff0c;如果不了解或者…

2022尚硅谷SSM框架跟学(九)Spring MVC基础四

2022尚硅谷SSM框架跟学 九 Spring MVC基础四14.SpringMVC执行流程14.1SpringMVC常用组件14.2DispatcherServlet初始化过程(Init)(1).初始化WebApplicationContext(2).创建WebApplicationContext(3).DispatcherServlet初始化策略14.3DispatcherServlet调用组件处理请求(Service)…

CentOS环境安装ffmpeg

这是我在网上搜罗的方法&#xff0c;亲测好用 &#xff0c;借此写篇文章&#xff0c;分享给大家。温馨提示&#xff1a;安装ffmpeg过程会很慢&#xff0c;因为它集成的功能太多了&#xff0c;所以在安装过程中不必长时间等待&#xff0c;执行命令后可暂时先去忙别的事&#xff…

Unity URP无法设置Transparency Sort Mode

Unity URP无法设置Transparency Sort Mode问题解决方案参考问题 一般使用Unity制作2D游戏时会将Transparency Sort Mode设置为Custom Axis并将Transparency Sort Axis设置为0,1,0来方便Spirte排序 但是当渲染管线切换为Universal Render Pipeline(通用渲染管线)时 Transpare…

JAVA将百万级数据高效的导出到EXCEL表单

遇到的问题 1.list集合太大&#xff0c;触发oom 2.导出excel数据量太大内存占满&#xff0c;没输出到硬盘前已经出发oom 接下来尝试用poi解决 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version&…

如何在Exchange Online中使用使用反垃圾邮件策略将域列入白名单

将域列入白名单 打开安全门户单击威胁策略单击反垃圾邮件策略单击反垃圾邮件入站策略(默认)单击“允许域”Exchange Online已启用默认的反垃圾邮件策略。策略的名称为Default。不建议使用这些电子邮件,因为它们会使你的组织容易受到来自该域或发件人的欺骗电子邮件的攻击。我…