首页 > 其他分享 >单调栈

单调栈

时间:2023-11-17 10:22:39浏览次数:31  
标签:45 元素 插入 栈中 81 单调

单调栈

定义

单调栈即满足单调性的栈结构。与单调队列相比,其只在一端进行进出。

使用方法:就是从栈顶读出来一个元素,该元素满足单调性的某一端。例如取出栈中的最小值。

原理

将一个元素插入单调栈时,为了维护栈的单调性,需要在保证将该元素插入到栈顶后整个栈满足单调性的前提下弹出最少的元素。

例如,栈中自顶向下的元素为 {0,11,45,81} 

 插入元素 14 时为了保证单调性需要依次弹出元素 0,11,操作后栈变为 {14,45,81} 。

 用伪代码描述如下:

1 insert x
2 while !sta.empty() && sta.top()<x
3     sta.pop()
4 sta.push(x)

 

标签:45,元素,插入,栈中,81,单调
From: https://www.cnblogs.com/yhstsy/p/17838072.html

相关文章

  • 单调队列
    acwing154滑动窗口,单调队列q存的是下标,真正的值需要再套一个a数组1#include<iostream>2usingnamespacestd;34constintN=1e6+10;56intn,k;7inta[N],q[N];//q代表单调队列89intmain()10{11scanf("%d%d",&n,&k);12for(in......
  • 决策单调性
    定义顾名思义,就是说在DP取最值的过程中选的转移点\(j\)是单调的。只要有这个性质,就可以优化枚举转移的复杂度。充要条件\[f_i=\text{最值}(g_j+w(j+1,i))\]\(w\)满足四边形不等式。这里以取\(\min\)为例。假设有决策点\(j_1<j_2\),\(w\)满足四边形不等式等价于\(\De......
  • 08-单调栈
    8.单调栈有个数组arr,找到arr[i]左面比他小的第一个数,和右面比他小的第一个数,要求O(N)的时间复杂度.思路:栈底下栈顶从小到大,栈中存放位置信息,入栈或者出栈的时候可能需要记录信息。8.1每日温度https://leetcode.cn/problems/daily-temperatures/1.题目给定一个整数数......
  • 单调栈学习笔记
    今天模拟赛B没想出来,甚至没到单调栈那一步。到了可能也不会做。发现单调栈已经忘干净了,之前学过的悬线法也不太会,这里补一下单调栈。板子:HISTOGRA-LargestRectangleinaHistogram在我的这篇博客里有题解。总之我自己是看懂了的。单调栈求最大全1子矩阵问题P4147玉......
  • 单调队列学习笔记
    Menu单调队列(MonotonicQueue)简介代码模板例题单调栈(MonotonicStack)简介代码模板例题......
  • 算法--笔记--单调栈
    单调栈是为了解决两层foru循环O(n^2)变为O(n)的问题思路是:维持一个单调栈.依次进入单调栈,并淘汰对后续没有帮助的对象当一个对象从栈里弹出的时候,结算当前对象参与的答案。如何判断单调栈是大压小还是小压大呢?左侧的要小的,就是大压小左侧的要大的,就是小压大......
  • 【学习笔记】决策单调性与四边形不等式
    Itst-决策单调性与四边形不等式学习笔记。这方面是真的一点不会啊。学点东西吧apj。约定对于\(n\timesm\)的矩阵\(A\),定义:子矩阵\(A_{[i_1,i_2,\cdots,i_k],[j_1,j_2,\cdots,j_l]}\)为矩阵\(A\)中第\(i_1,i_2,\cdots,i_k\)行和第\(j_1,j_2,\cdots......
  • 单调栈0
    通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。时间复杂度为O(n)。单调栈的本质是空间换时间,因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素,优点是整个数组只需要遍历一次。栈中存放什么?......
  • [最优化DP]决策单调性
    决策单调性的概念&证明工具:决策单调性,是在最优化dp中的可能出现的一种性质,利用它我们可以降低转移的复杂度。首先dp中会有转移,每个状态都由若干个状态转移而来,最优化dp比较特殊,只能由一个最优的状态转移而来。我们称之为某个状态的最优转移点。然后,dp会有一个转移顺序,......
  • 动态规划——决策单调性优化DP 学习笔记
    动态规划——决策单调性优化DP学习笔记决策单调性对于最优性问题,常有状态转移方程:\(f_i=\min/\max\{f_j\dots\}\),形象的:如果\(i\)的最优转移点是\(j\),\(i'\)的最优转移点是\(j'\),当\(i<i'\)时,有\(j\lej'\),则称该DP问题具有决策单调性。即:\(i\)单增,其最优转移点......