初谈这个话题,相信许多人会有一种似有所悟,但又不敢确定的感觉。没错,这正是因为其中“单调”一词的存在,所谓单调是什么,学过函数的people都知道单调函数或者函数的单调性,直白一点说单调就是一直增或一直减。例如:1,3,5,9就是一个单调增数列,数列中不存在后一个数比前一个数小的现象。那么同样,在这里谈到的话题也有类似特点。
转载 2023-07-20 07:26:05
111阅读
(文章目录) 前言 本文介绍单调单调队列的使用,并且提供模板。 一、单调地到顶是单调增加或者单调减少的。 1.代码模板: //常见模型:找出每个数左边离它最近的比它大/小的数 //stk[0]是不存放元素的,stk[tt]存放顶元素 int tt = 0; for (int i = ...
转载 2021-07-25 00:33:00
670阅读
2评论
之前我们讲了 队列 优先队列,本文看下单调队列单调单调队列 也许这种数据结构的你没听过,但他其实就是一个队列,只不过是用了巧妙的方法使得队列中的元素单调递增或单调递减。(当然,优先队列也可以求最值,只不过 JavaScript 语言没有原生支持,实现起来较麻烦) 单调队列解决什么问题? 给出数字数组 arr,比如他有 5 个元素,这时可能有 2 个操作: 插入新元素 删除已有元素
原创 2023-05-19 14:20:37
105阅读
单调板子题https://www.luogu.com.cn/problem/P5788#include <iostream>#include <stack>using
前言:本篇用了我比较长的时间,干货较多,甚至一篇顶三篇,希望各位耐心观看。Part 1:单调  单调是一种数据结构,一般分为单调递增单调递减单调一般用来解决寻找下一个大于或小于m的值。  我们把得到的答案放到K数组里。  一个经典例题:定义函数   在单调中,如果为空,那么K[i]就为0,如果不为空,则判断顶是否大于a[i],如果不是,那么弹出顶。最后,不管什么情
单调可以方便(O(n))地求出一个数,左右第一个比它大/小的数的位置如何求----给一个序列  2,3,6,9,4,7,1我们先求左边第一个比它小的为空,a[S.top()]<a[1] 所以 l[1]=0,S.push(1)单调里存的是编号接下来a[S.top()]<a[2] 所以l[2]=S.top=1, S.push(1)同理但是到4的时候a[S.top()]&gt
原创 2022-07-05 10:01:52
62阅读
输入样例:53 4 2 7 5输出样例:-1 3 -1 2 2普通做法,时间复杂度O(n^2),可能会TLE#include <
原创 2022-06-15 10:52:57
151阅读
最近几天接触了单调队列,还接触了单调,就总结一下。 其实单调队列,和单调都是差不多的数据类型,顾名思义就是在队列上加上单调单调递增或者单调递减。当要入或者入队的时候,要和头或者队尾进行比较,满足单调的性质则入队入,否则将当前元素删去,直到满足单调性质。 那么问题来了,单调队列,和单调有什么用了。最普遍的最重要的作用就是起到优化的作用。当然我目前也只知道这个所用。
原创 2022-10-18 14:03:10
78阅读
#include<cstdio> #include<string> #include<cstdlib> #include<cmath> #include<iostream> #include<cstring> #include<set> #include<queue> #include<algori
转载 2018-08-11 16:34:00
132阅读
2评论
算法思路 (\(stack\))又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为顶,相对地,把另一端称为底。向一个插入新元素又称作进、入或压,它是把新元素放到顶元素的上面,使之成为新的顶元素;从一个删除元素又称作出或退,它是把顶元 ...
转载 2021-06-19 15:24:00
252阅读
2评论
概要:对于维护信息具有单调性的性质或者问题可以转化为具有单调性质的模型的题,我们可以考虑用单调单调队列。技巧及注意:技巧很多,只要能将问题转化为单调性问题,就好解决了。当维护固定长度的单调区间,我们考虑用单调队列
原创 2021-08-11 14:42:31
148阅读
单调 or 单调队列,是指序列中的元素严格递增 or 递减。可以解决一
转载 2013-02-18 01:34:00
84阅读
2评论
测试地址: 做法:本题需要用到单调+单调队列。 我们可以用一些高级数据结构O(nlog&#x2061;n)" role="presentation" style="position: relative;">O(nlogn)O(nlog⁡n)简易地算出这个...
转载 2018-04-17 17:56:00
189阅读
2评论
注:部分模板来自acwing yxc 表示的是一种瓶子一样的数据容器,对应STL中的stack,我们只能从瓶子最上面拿东西,但是我们放东西只能从最下面开始放,所以最后放入东西要最先拿出来。虽然说在STL中有相应的容器,但是手动模拟的运行速度会更快一些。 const int N = 1e5 + 10 ...
转载 2021-09-28 10:02:00
242阅读
2评论
2018-11-16 22:45:48 一、单调队列 Monotone Queue 239. Sliding Window Maximum 问题描述: 问题求解: 本题是一个经典的可以使用双端队列或者说单调队列完成的题目,具体来说,就是通过双端队列将可能的最大值维护起来。 public int[]
转载 2018-11-16 22:57:00
677阅读
2评论
序 说起这个话题,应该很多人会有一种似有所悟,但又不敢确定的感觉。 (我差不多就是那样) 没错,这正是因为其中“单调”一词的存在。 那么单调是什么? 学过函数的人都知道单调函数或者函数的单调性吧 其实直白一点说单调,就是一直增或一直减。 eg:1,3,5,9就是一个单调增数列,数列中不存在后一个数比
原创 2021-08-03 09:38:36
146阅读
#include<iostream>using namespace std;const int N=10010;int n;int stk[N],tt;int main(){ cin>>n; for(int i=0;i<n;i++){ int x;
单调是一种特殊的,要求中的元素是单调递减或者单调递减的。1、适用场景单调适合的题目是求解下一个大于 xxx或者下一个小于 xxx这种题目。所有当你有这种需求的时候,就应该想到单调。2、介绍比如我们需要依次将数组 [1,3,4,5,2,9,6] 压入单调。首先压入 1,此时的为:[1]继续压入 3,此时的为:[1,3]继续压入 4,此时的为:[1,3,4]继续压入 5,此时的为:
目录单调(Monotone Stack)42. 接雨水84. 柱状图中最大的矩形方法1:暴力法O(n^2)方法2:单调O(n)单调:不使用Stack,使用Deque方法3:暴力优化(本题最优解)单调(Monotone Stack)的应用中有一类问题称为单调(Monotone Stack)问题,可以巧妙的将某些问题的时间复杂度降到「O(n)级别」。那么什么是单调呢?所谓单调,就是保持
下面我们通过几个题目由浅入深,一点一点挖透他们吧!提纲单调队列剑指 Offer 59 - II. 队列的最大值题目描述:请定义一个队列并实现函数 max_value 得到队列里的最大值若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入: ["MaxQueue","push_back","push_back","max_value","pop_front","max
原创 2021-02-02 19:42:00
1330阅读
  • 1
  • 2
  • 3
  • 4
  • 5