洛谷 P2032 扫描 (Java)

洛谷 P2032 扫描 (Java)

传送门:P2032 扫描

题目: 扫描

题目描述

有一个 1 × n 1 \times n 1×n 的矩阵,有 n n n 个整数。

现在给你一个可以盖住连续 k k k 个数的木板。

一开始木板盖住了矩阵的第 1 ∼ k 1 \sim k 1k 个数,每次将木板向右移动一个单位,直到右端与第 n n n 个数重合。

每次移动前输出被覆盖住的数字中最大的数是多少。

输入格式

第一行两个整数 n , k n,k n,k,表示共有 n n n 个数,木板可以盖住 k k k 个数。

第二行 n n n 个整数,表示矩阵中的元素。

输出格式

n − k + 1 n - k + 1 nk+1 行,每行一个整数。

i i i 行表示第 i ∼ i + k − 1 i \sim i + k - 1 ii+k1 个数中最大值是多少。

样例 #1

样例输入 #1

5 3
1 5 3 4 2

样例输出 #1

5
5
4

提示

对于 20 % 20\% 20% 的数据, 1 ≤ k ≤ n ≤ 1 0 3 1 \leq k \leq n \leq 10^3 1kn103

对于 50 % 50\% 50% 的数据, 1 ≤ k ≤ n ≤ 1 0 4 1 \leq k \leq n \leq 10^4 1kn104

对于 100 % 100\% 100% 的数据, 1 ≤ k ≤ n ≤ 2 × 1 0 6 1 \leq k \leq n \leq 2 \times 10^6 1kn2×106,矩阵中的元素大小不超过 1 0 4 10^4 104 并且均为正整数。

分析:

这道题可以用单调队列来解决。

单调队列是一种数据结构,它保证队列中元素的顺序单调递增或递减。

单调队列可以用于解决很多与滑动窗口相关的题目,例如:

  • 最大子序和
  • 最小滑动窗口
  • 最长递增子序列

这道题可以用单调队列来维护一个最大值队列,用于找出每次移动木板时被覆盖的数字中的最大值。

算法的核心思想是使用一个双端队列来存储当前被覆盖数字的下标,并保证队列中的数字是单调递减的。这样在每次移动木板时,队列的第一个元素即为当前被覆盖数字中的最大值。

实现方法

初始化双端队列 b 和队头 hh、队尾 tt:b 用于存储当前被覆盖数字的下标,hh 和 tt 分别表示队列的队头和队尾。

执行扫描算法:使用循环遍历矩阵中的每个元素,从下标 0 到 n-1。

向右移动木板:如果队列中的数字个数大于 0,且当前的下标与队头元素相差超过了 k,则将队头元素出队,即向右移动木板。

保证队列单调递减:在每次遍历元素时,如果队列中有元素,并且当前元素大于等于队列末尾元素对应的数字,则将队尾元素出队,直到队列中的元素单调递减。

将当前下标加入队列,并更新队尾指针 tt。

如果当前下标大于等于 k-1,则输出队头元素对应的数字,即当前被覆盖数字中的最大值。

该算法的时间复杂度为 O(n),因为每个元素最多入队和出队一次。

代码:

import java.util.ArrayList;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int k = sc.nextInt();ArrayList<Integer> a = new ArrayList<>();ArrayList<Integer> b = new ArrayList<>();for(int i = 0;i < n;i++) {a.add(sc.nextInt());}sc.close();// hh表示对头,tt表示队尾int hh = 0;int tt = 0;for(int i = 0;i < n;i++) {// 向右移动if(tt-hh>0&&b.get(hh)+k<=i) {hh++;}// 保证单调递减while(tt-hh>0&&a.get(i)>=a.get(b.get(tt-1))) {b.remove(tt-1);tt--;}tt++;b.add(i);if(i>=k-1)System.out.println(a.get(b.get(hh)));}}
}

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

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

相关文章

JAVA代码审计之XSS漏洞

Part1 漏洞案例demo&#xff1a; 没有java代码审计XSS漏洞拿赏金的案例。 所以将就看看demo吧 漏洞原理&#xff1a;关于XSS漏洞的漏洞原理核心其实没啥好说的&#xff0c;网上一查一大堆 反射性XSS漏洞 <% page language"java" contentType"text/html; c…

跨越千年医学对话:用AI技术解锁中医古籍知识,构建能够精准问答的智能语言模型,成就专业级古籍解读助手(LLAMA)

介绍&#xff1a;首先在 Ziya-LLaMA-13B-V1基线模型的基础上加入中医教材、中医各类网站数据等语料库&#xff0c;训练出一个具有中医知识理解力的预训练语言模型&#xff08;pre-trained model&#xff09;&#xff0c;之后在此基础上通过海量的中医古籍指令对话数据及通用指令…

Vite+Vue3+Ant Design3.2报错: Cannot read properties of null (reading ‘isCE‘)

最近的ViteVue3Ant Design Vue3.2开发的项目莫名其妙的报错&#xff1a; Uncaught (in promise) TypeError: Cannot read properties of null (reading isCE) 一直找不到原因出在哪&#xff0c;害的我费了好多时间调试 &#xff0c;百度上也找了各个解决方法&#xff0c;有说使…

React18源码: schedule任务调度messageChannel

React调度原理(scheduler) 在React运行时中&#xff0c;调度中心&#xff08;位于scheduler包&#xff09;是整个React运行时的中枢&#xff08;其实是心脏&#xff09;&#xff0c;所以理解了scheduler调度&#xff0c;就基本掌握了React的核心React两大循环&#xff1a;从宏…

uniapp实现全局悬浮框

uniapp实现全局悬浮框(按钮,页面,图片自行设置) 可拖动 话不多说直接上干货 1,在components新建组件(省去了每个页面都要引用组件的麻烦) 2,实现代码 <template><view class"call-plate" :style"top: top px;left: left px;" touchmove&quo…

Java架构师之路四、分布式系统:分布式架构、分布式数据存储、分布式事务、分布式锁、分布式缓存、分布式消息中间件、分布式存储等。

目录 分布式架构&#xff1a; 分布式数据存储&#xff1a; 分布式事务&#xff1a; 分布式锁&#xff1a; 分布式缓存&#xff1a; 分布式消息中间件&#xff1a; 分布式存储&#xff1a; Java架构师之路三、网络通信&#xff1a;TCP/IP协议、HTTP协议、RESTful API、We…

【数据分享】中国首套1公里高分辨率大气湿度指数数据集(6个指标\免费获取)

湿度数据是气象学和许多其他领域中至关重要的数据&#xff0c;可用于气象预测与气候研究。之前我们分享过Excel格式和GIS矢量格式&#xff08;均可查看之前的文章获悉详情&#xff09;的2000-2020年全国各城市逐日、逐月和逐年的湿度数据。 本次我们给大家带来的是中国首套1公…

前端常见面试题之react高级特性(Portals、Context、HOC等)

文章目录 1. Portals将子组件渲染到父组件以外的DOM节点上2. Context组件树中传递数据3. react中如何加载异步组件4. shouldComponentUpdate有什么用5. state中值的不可变性6. HOC和Render Props代码复用和逻辑分离7. redux8.React-Redux9. react-reducx异步action 1. Portals将…

【无标题】//创建单向循环链表//创建结点//头插//按位置插入//尾删//按位置删除

1.h头文件 #ifndef __1_H_ #define __1_H_ #include <stdio.h> #include <stdlib.h> typedef int datatype; typedef struct loop_list {union{int len;datatype data;};struct loop_list *next; }loop_list,*loop_p; loop_p create_head(); loop_p create_node(…

【嵌入式学习】QT-Day3-Qt基础

1> 思维导图 https://lingjun.life/wiki/EmbeddedNote/20QT 2> 完善登录界面 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后…

子查询

Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 子查询 前面我们学过了利用 group by子句可以实现分组的操作&#xff0c;主要的统计函数有&#xff1a;COUNT()、AVG()、SUM()、MAX()、MIN() 并且介绍了分组统计查询的若干限制以及在…

设计模式面试系列-03

1. Java 中如何实现模板方法模式? 举例:去餐厅吃饭,餐厅给我们提供了一个模板就是:看菜单,点菜,吃饭,付款,走人。注意这里“点菜和付款”是不确定的由子类来完成的,其他的则是一个模板。 1、先定义一个模板。把模板中的点菜和付款,让子类来实现。 package com.yoo…

IP 协议

IP 协议 .IP协议格式四位版本号四位首部长度8位服务类型16位总长度16位标识符,3位标志位,13位片偏移8位生存时间TTL8位协议16位首部校验和32位源地址 32位目的地址IP地址的组成特殊的IP地址 . IP协议格式 四位版本号 用来表示IP协议的版本,现有的IP协议只有两个版本,IPv4,IPv6…

comfyui节点编写示例文件(下)

** 1、先看示例文件的结构 ** ** 2、设置输入参数 ** ** 3、节点指定任务、输出啥 ** ** 4、这个节点干了啥&#xff0c;定义函数、输出结果 ** ** 5、多个节点&#xff0c;就多个类 ** ** 6、设置多个入口 ** ** 7、放置 ** 直接把py文件放到 .\Co…

PostgreSQL教程(四):高级特性

一、简介 在之前的章节里我们已经涉及了使用SQL在PostgreSQL中存储和访问数据的基础知识。现在我们将要讨论SQL中一些更高级的特性&#xff0c;这些特性有助于简化管理和防止数据丢失或损坏。最后&#xff0c;我们还将介绍一些PostgreSQL扩展。 本章有时将引用教程&#xff0…

消息中间件之RocketMQ为什么写文件这么快?

RocketMQ的存储涉及中&#xff0c;很大一部分是基于Kafka的涉及进行优化的。 PageCache 现代操作系统内核被设计为按照Page读取文件&#xff0c;每个Page默认4KB, 因为程序一般符合局部性原理&#xff0c;所以操作系统在读取一段文件内容时&#xff0c;会将该段内容和附件的文…

Nginx网络服务二-----(虚拟机和location)

一、HTTP设置 1.设置虚拟主机 1.1Nginx 基于域名---虚拟主机 include /apps/nginx/conf.d/*.conf; 1.2Nginx 基于端口---虚拟主机 在做了域名的基础上&#xff0c;按照以下步骤继续 1.3Nginx 基于IP---虚拟主机 2.server下的root root路径格式 指定文件的路径 url …

DataX学习详解

参考视频 02_DataX_概述_哔哩哔哩_bilibili 参考文档 大数据技术之DataX-阿里云开发者社区 介绍 DataX 是阿里巴巴开源的一个 异构数据源 离线 同步工具 致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP&#xff0c;MongDB等各种异构数据源之间…

[python][whl]PyOpenGL轮子文件whl格式所有版本含python3.12版本下载地址汇总

以下PyOpenGL都是windows x64系统使用pyopengl注意对应版本下载&#xff0c;文件名命名规则为&#xff0c;以PyOpenGL-3.1.6-cp312-cp312-win-amd64.whl为例子 PyOpenGL&#xff1a;python模块名称 3.1.6&#xff1a;pyopengl版本号 cp312:表示支持python3.12版本不支持其他…

五、深入学习TensorRT,Developer Guide篇(四)

上一篇文章我们介绍了C的API&#xff0c;这篇文章我们主要针对的是Python的API&#xff0c;起始C和Python在整体流程上面基本一致&#xff0c;但是由于Python天然的简洁性和易用性&#xff0c;Python的API相对来讲还是比较简单的&#xff0c;我们一起来看一下吧。 文章目录 4.…