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

news/2024/11/25 17:45:35/

题目地址:

https://www.luogu.com.cn/problem/P1440

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

输入格式:
第一行两个整数,分别表示 n n n m m m。第二行, n n n个正整数,为所给定的数列 a i a_i ai

输出格式:
n n n行,每行一个整数,第 i i i个数为序列中 a i a_i ai之前 m m m个数的最小值。

数据范围:
对于 100 % 100\% 100%的数据,保证 1 ≤ m ≤ n ≤ 2 × 1 0 6 1\le m\le n\le2\times10^6 1mn2×106 1 ≤ a i ≤ 3 × 1 0 7 1\le a_i\le3\times10^7 1ai3×107

其实就是求滑动窗口最值问题,可以用单调队列来做,开个单调上升队列即可。代码如下:

#include <iostream>
#include <queue>
using namespace std;int n, m;int main() {scanf("%d%d", &n, &m);deque<pair<int, int>> dq;for (int i = 0; i < n; i++) {int x;scanf("%d", &x);// 把出了窗口的数弹出if (dq.size() && dq.front().first < i - m) dq.pop_front();// 此时队头就是最小值了if (dq.size()) printf("%d\n", dq.front().second);else puts("0");// 把队列尾大于等于x的数弹出,因为它们不会是将来数前m个数中的最小值while (dq.size() && dq.back().second >= x) dq.pop_back();// 最后把x入队dq.push_back({i, x});}return 0;
}

时间复杂度 O ( n ) O(n) O(n),空间 O ( m ) O(m) O(m)


http://www.ppmy.cn/news/161098.html

相关文章

【前端】如何修改IE11的三个分辨率(1920,1440,1366)

前言 分辨率的适配问题&#xff0c;一直以来使用百分比自适应和媒体查询&#xff0c;但是一些在chrome浏览器的样式设置往往不适合IE浏览器。 设置格式&#xff1a; // IE11 1366分辨率 media screen and(-ms-high-contrast: active), (-ms-high-contrast: none) and(max-w…

2160php,[小科普]关于2k、4k、1080p、1440p、2160p等等令人迷惑的叫法

2k、4k的最早官方定义并非是显示器、电视领域&#xff0c;而是电影行业&#xff0c;Digital Cinema Initiative(DCI)在规范里的标准定义分别是2048*1080、4096*2160。尔后逐渐这种叫法被推广到民用显示器、电视等领域&#xff1b;并且约定以水平方向像素的近似值为参考。所以严…

win10分辨率不能调整_win10系统怎么没有1440×900分辨率?

展开全部 大家好&#xff0c;我是大明&#xff0c;关于电脑win10系统没有1440*900分辨率的问题我是这样认为的,19寸及以上的显示器32313133353236313431303231363533e78988e69d8331333433653934是支持1440*900分辨率的,除非是提问者所使用的电脑显示器是19寸以下的是不支持的。…

[RK3399] [Android 9.0] 调试2560x1440分辨率EDP显示屏,和碰到的休眠唤醒后花屏问题

屏参&#xff1a; panel: panel {compatible "simple-panel";backlight <&backlight>;power-supply <&vcc_lcd>;enable-gpios <&gpio3 16 GPIO_ACTIVE_LOW>;reset-gpios <&gpio1 4 GPIO_ACTIVE_HIGH>;prepare-delay-ms…

ORACLE通过sql生成一天内1440分钟与86400秒

1.生成分钟&#xff1a;select to_char(trunc(sysdate) (rownum - 1) / 24 / 60, hh24:mi) TIMELINE from dual connect by rownum < 60 * 24 2.生成秒&#xff1a;select to_char(trunc(sysdate) (rownum - 1) / 24 / 60 / 60, hh24:mi:ss) TIMELINE from dual connect b…

linux宽屏分辨率,LINUX下945G+19 宽屏分辨率1440*900设置

LINUX下945G&#xff0b;19 宽屏分辨率1440&#xff0a;900设置 发布时间:2008-03-01 00:06:36来源:红联作者:Ooiqtd 作者:D版乞丐 时间:2008-02-27 邮箱: ihacker8163.com 主页:http://blog.chinaunix.net/u1/59345/ 版权: 该文章版权由D版乞丐所有。可在非商业目的下任意传播…

最高增强至1440p,阿里云发布端侧实时超分工具,低成本实现高画质

近日&#xff0c;阿里云机器学习PAI团队发布一键端侧超分工具&#xff0c;可实现在设备和网络带宽不变的情况下&#xff0c;将移动端视频分辨率提升1倍&#xff0c;最高可增强至1440p&#xff0c;将大幅提升终端用户的观看体验&#xff0c;该技术目前已在优酷、夸克、UC浏览器等…

4k hidpi 黑苹果_关于4K,1440P显示屏开启HIdpi的问题

最近一直在忙hidpi的问题。。。大概明明白了hidpi的一些原理。。。比如1920X1080的显示器只能开960X540的Hidpi...往上开hidpi后压根不是retina显示了。。。 所以要开1280X720的hidpi就只能是2560X1440的27寸显示器。当然啦 这种情况下的hidpi还是比较流畅的。。。但如果是4K咧…