首页 > TAG信息列表 > 单调

单调栈基础知识

单调栈(Monotone Stack):一种特殊的栈。在栈的「先进后出」规则基础上,要求「从 栈顶 到 栈底 的元素是单调递增(或者单调递减)」。其中满足从栈顶到栈底的元素是单调递增的栈,叫做「单调递增栈」。满足从栈顶到栈底的元素是单调递减的栈,叫做「单调递减栈」。 单调递增栈:只有比栈顶元素小

CSP-S2019 划分(贪心,DP,单调队列 / 栈)

CSP-S2019 划分 \(n\) 数组 \(a\) 要求划分成若干段每段和递不减求最小每段和平方和。\(n \le 4 \times 10 ^ 7\)。 CODE 最后一段要求最小随便证。于是转为找最大转移点 \(f[i] = j\) 满足 \(i \ge 2s[j] - s[f[j]]\)。单调队列即可。

【学习笔记】线段树维护单调栈

线段树维护单调栈 在经过一晚上和某考试题的奋斗后,我终于确定了那道题不能用线段树维护单调栈做,同时对这个算法有了更深的理解。 前言: 众所周知,线段树啥都能干。 求出最长上升/下降子序列,肯定可以 \(O(n)\) 单调栈跑一遍。但是如果套上单点修改和多次询问,\(O(n ^ 2)\) 的复杂度可

现在是 2022 年了,你不知道什么是单调栈和单调队列吗? (下)

报名金石计划第一次挑战——分享10万奖池,这是我的第2篇文章, 点击查看活动详情 从上面继续, 现在是 2022 年了,你不知道什么是单调栈和单调队列吗? (上)——掘金(juejin.cn) .今天我们将讨论什么是单调堆栈。 介绍 阅读本文后,您将获得: 什么是单调栈 单调栈可以解决的问题 单调栈经典问题

优化dp

单调队列优化dp 单调队列 单调队列是一种特殊的双端队列,其内部元素具有单调性。常见有最大队列和最小队列两种单调队列,其内部元素分别是单调递减和单调递增的。 支持两种操作 -插入:如果新元素从队尾插入后会破坏其单调性,则删除队尾元素,直到插入后不再破坏单调性为止,再将其插入单

单调栈-下一个更大元素

单调栈使用满足如下: 输入:nums1=[4,1,2],nums2=[1,3,4,2]. 输出:[-1,3,-1] 解释: 对于num1中的数字4 ,你无法在第二个数组中找到下一个更大的数字,因此输出-1。 对于num1中的数字1,第二个数组中数字1右边的下一个较大数字是 3 。 对于num1中的数字2,第二个数组中没有下一个更大

768. 最多能完成排序的块 II

题目(链接) arr是一个可能包含重复元素的整数数组,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。 我们最多能将数组分成多少块? 示例 1: 输入: arr = [5,4,3,2,1] 输出: 1 解释: 将数组分成2块或者更多块,都无法

[单调栈] GYM-103185E Excellent Views

题目大意 有 \(N (N\leq 10^5)\) 个建筑排成一列,第 \(i\) 个建筑的高度是 \(H_i\),\(H_i\) 两两不同,从建筑 \(i\) 到建筑 \(j\) 被认为是可达的,当且仅当不存在 \(k\) 使得 \(|i-k|\leq|i-j|\) 并且 \(H_j<H_k\)。 题解 考虑算每个 \(H_i\) 带来的贡献。维护一个从栈底到栈顶单调递

CF1550C 题解

前言 题目传送门! 更好的阅读体验? 比赛时,这题写了一个 \(O(n^3)\) 算法,然后就过了。 以为是数据水,实际上可以证明时间复杂度是 \(O(n)\) 的。 思路 关键是一个结论:当 \(i < j < k\) 时,若 \(a_i, a_j, a_k\) 单调不降或单调不升,则三元组 \((a_i, i), (a_j, j), (a_k, k)\) 必定是坏

【DP】决策单调性小记

何谓决策单调性? 指的就是在最优化 dp 中,状态的最优转移点单调不减的性质。 这使得我们在做 dp 的时候可以减少冗余计算以达到优化的效果。这类优化方法常用于分段问题。 0x01:四边形不等式 设 \(f[i]\) 表示将前 \(i\) 个位置分段的最小代价,\(w(j,i)\) 表示从 \(j\) 转移到 \(i\)

单调栈模板

力扣503 class Solution { public: vector<int> nextGreaterElements(vector<int>& nums) { int n = nums.size(); vector<int> ret(n, -1); stack<int> stk; for (int i = 0; i < n * 2 - 1; i++) {

Dp的优化

Dp的优化 单调栈优化Dp The Great Wall II 题意: 给你 n个点,问分成 1∼n 组,每一组的代价就是这一组中的最大值,问每一种情况的最小权值和。 思路: 把状态定义为 d i j 表示 走到 i 号点了 分了j 组的最小代价。 那么先枚举分成了几组 ,枚举从哪个点转移。 d[i][j]=min(d[i][j],d[k]

重修 斜率优化 Dp

斜率单调暴力移指针 斜率不单调二分找答案 \(x\) 坐标单调开单调队列 \(x\) 坐标不单调开平衡树 / cdq分治 P4072 [SDOI2016]征途 我们要求方差最小,而总和不变,等价于要每天走的路程平方和最小。 设 \(s(i)\) 表示前 \(i\) 段路的距离总和。 首先我们有一个 naive 的 \(O(n^3)\)

leetcode738-单调递增的数字

单调递增的数字 贪心算法 先对数字进行遍历,找出从零开始单调递增的子序列。 如果此时i小于数组长度,意味着数组不是全部递增的,需要对数组进行修改。那么让i从后向前进行遍历,每次将arr[i-1]数组减一,直到arr[i] >= arr[i-1]成立为止。将前面的数字减少之后,由于前面的数字已经小于原

20220813 夜间闲话

今天下午有一场模拟比赛。毫不奇怪,我又跌到了谷底。幸好奇瑞不在,不然又要被骂了。 dkd和lh为AK取得好成绩,为cqyz争光。不出所料,lhAK 非常快。 T1是一个很微妙的贪心(其实并不严格)问题,结论其实很简单,但是思维要好。 T2是个垃圾问题,标题不清楚,不吐槽很难。我觉得T3很无聊,复杂度错了,数

单调栈

P5788 【模板】单调栈 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意:返回数组中第一个大于第i个元素的数的下标 单调栈(栈中元素满足单调性) 从后往前遍历数组,对于当前元素,如果它比栈中的元素大,那么就不断出栈 需要求当前元素对应的答案,如果栈顶元素比它还小,那么肯定不是当

「POJ 3666」Making the Grade 题解(两种做法)

0前言 感谢yxy童鞋的dp及暴力做法! 1 算法标签 优先队列、dp动态规划+滚动数组优化 2 题目难度 提高/提高+ CF rating:2300 3 题面 「POJ 3666」Making the Grade 路面修整 4 分析题面 4.1 简要描述 给出数列 \(A\), 求非严格单调不上升或单调不下降, 且\(S=\sum^N_{i=1}|A_i-B_i|\)

目录

一:基础算法 快速排序(求第k小的数) 归并排序(逆序对数量) 高精度 前缀和&差分 双指针 贪心 递推 递归 二分 倍增 位运算 二:数据结构 链表 单调栈 单调队列 哈夫曼树 堆 ST表 并查集 树状数组 线段树 字典树(trie树) 哈希表 笛卡尔树 基环树 平衡树 三:搜索 简单DFS 简单BFS Flood Fill 剪

决策单调性优化dp

决策单调性优化 \(dp\) 对于转移 \[dp_j=\min_{i<j}(f_i+w(i,j)) \]令 \(t(i,j)\) 表示从 \(i\) 转移到 \(j\) 后 \(j\) 的 \(dp\) 值 若有对于任意 \(i<j\),存在 \(k\) 使得对于 \(任意d\in[0,k]t(i,d)\le t(j,d)任意d\in[k+1,n]t(i,d)\gt t(j,d)\) 我们就说这个转移具有决策单调

单调栈/单调队列

单调栈,单调队列 看名字他们有有一个共同的特点,那就是——单调 因为它们“单调”,所以单调栈和单调队列,他们存储的数据都是有序的,只会递增或递减。                                                 单调栈  单调栈分为单调递增栈和单调递减栈 单调递增栈

单调队列

“如果一个选手比你小还比你强,你就可以退役了。”——单调队列的原理 作者写的很好,例子也很形象  : 算法学习笔记(66): 单调队列 - 知乎 (zhihu.com) https://leetcode-cn.com/problems/sliding-window-maximum/  

【机器学习的数学02】数列的极限

数列的极限 本文为基于 “《机器学习的数学》- 第1章 一元函数微积分 - 1.1 极限与连续 - 1.1.2 数列的极限” 的学习笔记 知识脉络梳理: 给出数列极限的定义: 直观理解 \(\epsilon\)定义 数列极限的四则运算 证明数列极限存在: 用定义证明 单调收敛定理 夹逼定理 一、数列极

单调栈的介绍以及一些基本性质

单调栈的定义: 单调栈就是栈内元素单调递增或者单调递减的栈,单调栈只能在栈顶操作。 为了更好的理解单调栈,则可将单调栈用生活情形模拟实现,例如: 我们借用拿号排队的场景来说明下。现在有很多人在排队买可乐,每个人手里都拿着号,越靠前的人手里的号越小, 但是号不一定是连续的。小明拿

小清新简单dp题(二)

9. P1453 城市环路 很容易发现这其实就是一道基环树上的 dp 题。 如果是在普通树上该怎么做呢?考虑设 \(dp_{i,0/1}\) 表示以 \(i\) 为根的子树内,\(i\) 节点不选/选时贡献的最大值,有转移方程: \[dp_{i,0}=\sum_{j\in son_i} \max(dp_{j,0},dp_{j,1}) \]\[dp_{i,1}=\sum_{j\in son_i}

正弦函数里的相位和初相分别是什么?应该怎么求?

引用:https://zhidao.baidu.com/question/576146037.html 1、在y=Asin(ωx+φ)中,A称为振幅;ωx+φ称为相位;x=0时的相位(ωx+φ=0+φ=φ)称为初相。 2、有具体的函数就可以求。y是x的函数,A、ω、φ是定值。     扩展资料 正弦函数y=sinx;余弦函数y=cosx 1、单调区间 正弦函数在[-π/2