当前位置: 首页 > java >正文

洛谷 P1440 求m区间内的最小值

题目描述

一个含有 n 项的数列,求出每一项前的 m 个数到它这个区间内的最小值。若前面的数不足 m 项则从第 1 个数开始,若前面没有数则输出 0。

输入格式

第一行两个整数,分别表示 n,m。

第二行,n 个正整数,为所给定的数列 ai​。

输出格式

n 行,每行一个整数,第 i 个数为序列中 ai​ 之前 m 个数的最小值。

输入输出样例

输入 #1复制

6 2
7 8 1 4 3 2

输出 #1复制

0
7
7
1
1
3 

#include <bits/stdc++.h>
using namespace std;
const int N = 2e6+10;
int q[N];
int a[N];
int n,m;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>a[i];
    int hh = 1,tt = 0;//hh队头  tt队尾
    for(int i=1;i<=n;i++) {
        cout<<a[q[hh]]<<endl;//队头元素就是最小值
        while(hh<=tt && a[q[tt]]>a[i]) tt--;//维护单调队列  队列中的元素单调递增 
        if(hh<=tt && i - m + 1 > q[hh]) hh++;//滑出窗口 就然队头前进
        q[++tt] = i;
    }
}

http://www.xdnf.cn/news/3946.html

相关文章:

  • 8.5/Q1,Charls高分经典文章解读
  • 【Web3】上市公司利用RWA模式融资和促进业务发展案例
  • Spring Boot多模块划分设计
  • C++访问MySQL
  • 《Python星球日记》第31天:Django 框架入门
  • opencv+opencv_contrib+cuda和VS2022编译
  • 202531 | RocketMQ 消息过滤 + 消息重试机制 + 死信消息 + 重复消费问题
  • zotero pdf中英翻译插件使用
  • epub格式转txt格式工具,txt批量转PDF
  • 设计模式(结构型)-组合模式
  • 【Java ee初阶】多线程(6)
  • item_get_app_pro - 获得淘宝app商品详情原数据操作流程
  • 使用 vllm 部署 Llama3-8b-Instruct
  • 【C++】grpc(一):安装
  • 【Python】Python好玩的第三方库之二维码生成,操作xlsx文件,以及音频控制器
  • 从零开始学Flink:开启实时计算的魔法之旅
  • CSS知识总结
  • Socket 编程 TCP
  • OpenGl实战笔记(1)基于qt5.15.2+mingw64+opengl绘制三角形
  • 解决因字段过长使MYSQL数据解析超时导致线上CPU告警问题
  • 技术犯规计入个人犯规吗·棒球1号位
  • [C语言]第一章-初识
  • 【Linux】深入理解Linux基础IO:从文件描述符到缓冲区设计
  • Java求职面试:Spring Boot与微服务的幽默探讨
  • 架构思维:构建高并发读服务_异构数据的同步一致性方案
  • C语言:文件操作
  • Cognito
  • Android基于绑定的控件用法
  • 文献分享:CH-CL配对和VL结构域的完整性影响IgG1分泌过程
  • XGBoost算法原理及Python实现