单调队列 & 单调队列优化DP & 题目推荐

本文通过一道题目介绍了如何使用单调队列优化动态规划解决方案,详细解释了单调队列的概念及其工作原理,并提供了具体的应用实例,包括在解决求区间最大值问题中的作用。此外,还提到了另一道利用单调队列优化DP的琪露诺问题,讨论了如何通过单调队列实现O(N)的时间复杂度解法。
摘要由CSDN通过智能技术生成

来看一道题

扫描

题目描述
有一个 1 ∗ n 的矩阵,有 n 个正整数。

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

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

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

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

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

输出格式
共 n − k + 1 行,每行一个正整数。

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

说明/提示
对于 100% 的数据保证:1 ≤ n ≤ 2 ∗ 1e6,1 ≤ k ≤ n

矩阵中元素大小不超过 1e4。


这道题我们很明显是没有办法暴力的(极限复杂度 O ( N 2 ) O(N^2) O(N2)

那么我们就要想办法优化,这时候就需要引入我们的单调队列

单调队列

我们需要维护一个队列让他保持单调性(递增或者递减)

形象的来说就是一些帅哥在比谁长得帅,每个人都有一个身高和颜值

首先进来的是xyc,他的身高是1m,颜值是 − ∞ -\infty ,但是因为队里是空的,所以我们还是让他入队

队列里变成

编号 姓名 身高 颜值
1 xyc 1m − ∞ -\infty

后来又来了一个gjm,他的身高是1.1m,颜值是0,那么,xyc既比gjm矮,又没有gjm帅,所以xyc肯定不是这次“比帅大会”的冠军了,所以我们把他踢出队列

队列变成

编号 姓名 身高 颜值
2 gjm 1.1m 0 0 0

后来又来了一个ygl,ygl身高1.7m,颜值是 − 100 -100 100

虽然ygl颜值比gjm要低,但是他比gjm高啊,海拔也可以体现帅,所以gjm仍然有希望,我们把ygl加入队列

编号 姓名 身高 颜值
2 gjm 1.1m 0 0 0
3 ygl 1.7m − 100 -100 100

最后来了一个ljr,ljr身高一米九,帅度 + ∞ +\infty +

这样他轻松吊打了[吊打了(吊打了集训队的xyc)的gjm],成为了这次比赛的冠军,gjm和ygl只能被踢出,因为他们身高和颜值都没有ljr高

编号 姓名 身高 颜值
4 ljr 1.9m + ∞ +\infty +

经过这个例子我们就知道了单调队列的思想,有两个参数 a i a_i a<

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值