单调栈
tomjobs
别慌,慌也没用
展开
-
2021年度训练联盟热身训练赛第一场 E. Early Orders(单调栈)
题意: 求一个字典序最小的子序列,包含1~k所有数恰好一次。 思路: 类似单调栈,用一个栈记录以及选的数字。只要当前的数a[i]a[i]a[i]没在栈中,且比栈底的数小,并且栈底之后还出现,就出栈。 bitsetbitsetbitset写法,参考了别人代码 #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <set> #incl.原创 2021-03-11 10:09:41 · 163 阅读 · 0 评论 -
LeetCode 907. 子数组的最小值之和(单调栈)
给定一个整数数组 arr,找到 min(b) 的总和,其中 b 的范围为 arr 的每个(连续)子数组。 由于答案可能很大,因此 返回答案模 10^9 + 7 。 示例 1: 输入:arr = [3,1,2,4] 输出:17 解释: 子数组为 [3],[1],[2],[4],[3,1],[1,2],[2,4],[3,1,2],[1,2,4],[3,1,2,4]。 最小值为 3,1,2,4,1,1,2,1,1,1,和为 17。 示例 2: 输入:arr = [11,81,94,43,3] 输出:444 提示:原创 2021-02-02 15:16:26 · 254 阅读 · 0 评论 -
Codeforces1407 D. Discrete Centrifugal Jumps(单调栈+DP)
There are ???? beautiful skyscrapers in New York, the height of the ????-th one is ℎ????. Today some villains have set on fire first ????−1 of them, and now the only safety building is ????-th skyscraper. Let’s call a jump from ????-th skyscraper to ????-t原创 2020-09-09 08:19:28 · 339 阅读 · 0 评论 -
牛客 最大最小(单调栈,区间最大大于最小两倍)
思路: 首先必须明确单调栈的最主要的作用,就是找到每个数左边右边第一个小于大于他的数,如果配上倍增或者二分可以找到小于大于他的第k大数。所有用单调栈的题目都得思考怎么利用这个性质来套题目。 对于本题,我们可以找到每个数右边第一个大于等于其两倍的数R2[i]R2[i]R2[i],小于等于其一半的数R3[i]R3[i]R3[i]。 可以找到以每个数为左端点的可行区间的数目,也就是n−1−max(R2[i],R3[i])+1n-1-max(R2[i],R3[i])+1n−1−max(R2[i],R3[i])+.原创 2020-08-14 10:52:26 · 349 阅读 · 0 评论 -
Codeforces1382 D. Unmerge(DP,单调栈)
Let ???? and ???? be two arrays of lengths ???? and ????, respectively, with no elements in common. We can define a new array merge(????,????) of length ????+???? recursively as follows: If one of the arrays is empty, the result is the other array. That is原创 2020-07-22 11:06:07 · 275 阅读 · 0 评论 -
ICPC NEAU Programming Contest 2020 D 旅游(单调栈)
思路: 你只要把每个数为起点的上升子序列抽出来(能抽则抽),那么此时要求第几大都可以求出来。这个过程直接用单调栈维护。 不过也可以使用倍增,定义f[i][j]f[i][j]f[i][j]代表以第iii个数为起点的第i+2j−1i+2^j-1i+2j−1大的数是什么,结合单调栈可以直接求出来,在在线的情况下只能使用这种方法。 #include <cstdio> #include <cstring> #include <algorithm> #include <vec.原创 2020-06-07 15:07:11 · 311 阅读 · 1 评论 -
G. Gentle Jena(单调栈) 2020 年 “联想杯”全国高校程序设计在线邀请赛暨第三届上海理工大学程序设计竞赛
题意: 给出b[i]的计算公式,第i回合加上b[i]这个数,第i回合的结果为所有区间最小值的和。求所有回合结果的异或值。 思路: 维护一个递增的单调栈,保证弹出的数都比b[i]大,那么这些数在包含b[i]的区间里面都不会被计算到。 单调栈里面维护这个数的值,以这个数为右端点的区间最小值和,下标。 #include <ctime> #include <iostream> #include <assert.h> #include <vector> #inclu..原创 2020-05-31 00:36:48 · 299 阅读 · 0 评论 -
leetcode 85. 最大矩形(单调栈)
给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 示例: 输入: [ [“1”,“0”,“1”,“0”,“0”], [“1”,“0”,“1”,“1”,“1”], [“1”,“1”,“1”,“1”,“1”], [“1”,“0”,“0”,“1”,“0”] ] 输出: 6 通过次数19,284提交次数43,367 思路: 定义数组up[i][j]up[i][j]u...原创 2020-03-06 14:55:19 · 167 阅读 · 0 评论 -
P2947 [USACO09MAR]向右看齐Look Up(单调栈)
题目描述 Farmer John’s N (1 <= N <= 100,000) cows, conveniently numbered 1…N, are once again standing in a row. Cow i has height H_i (1 <= H_i <= 1,000,000). Each cow is looking to her left to...原创 2020-01-19 20:50:57 · 210 阅读 · 0 评论 -
洛谷P1901 发射站(单调栈)
某地有 N 个能量发射站排成一行,每个发射站 i 都有不相同的高度 Hi,并能向两边(当 然两端的只能向一边)同时发射能量值为 Vi 的能量,并且发出的能量只被两边最近的且比 它高的发射站接收。 显然,每个发射站发来的能量有可能被 0 或 1 或 2 个其他发射站所接受,特别是为了安 全,每个发射站接收到的能量总和是我们很关心的问题。由于数据很多,现只需要你帮忙计 算出接收最多能量的发射站接收的能...原创 2020-01-19 20:36:51 · 224 阅读 · 0 评论 -
2019银川区域赛 K题 Largest Common Submatrix(二维单调栈,最大公共子矩阵)
You are given two n \times mn×m matrices, and the elements of each matrix are ranged from 11 to n \times mn×m and pairwise distinct. You need to find the common submatrix with the largest size between...原创 2020-01-19 00:17:29 · 606 阅读 · 0 评论 -
hdu2870 Largest Submatrix AcWing 333. 最大子矩阵(单调栈 悬线dp)
给定一个由字母’a’,’b’,’c’,’w’,’x’,’y’,’z’构成的矩阵,你可以将’w’改为’a’或’b’, 将’x’更改为’b’或’c’,将’y’更改为’a’或’c’,将’z’更改为’a’,’b’或’c’。 请你求出通过更改矩阵,可以得到的由相同字母构成的最大子矩阵。 输入格式 输入包含多组测试数据。 每组测试数据第一行包含两个整数m和n,分别表示矩阵的行和列。 接下来 m 行,每行包含n...原创 2019-10-28 18:59:21 · 280 阅读 · 0 评论 -
BZOJ3039. 玉蟾宫(悬线dp 单调栈)
Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。 这片土地被分成N*M个格子,每个格子里写着’R’或者’F’,R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda。 现在freda要在这里卖萌。。。它要找一块矩形土地,要求这片土地都标着’F’并且面积最大。 但是rainbow和fre...原创 2019-10-04 01:52:30 · 226 阅读 · 0 评论 -
P1823 [COI2007] Patrik 音乐会的等待(单调栈)
题目描述 N个人正在排队进入一个音乐会。人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人。队列中任意两个人A和B,如果他们是相邻或他们之间没有人比A或B高,那么他们是可以互相看得见的。 写一个程序计算出有多少对人可以互相看见。 输入格式 输入的第一行包含一个整数N (1 ≤ N ≤ 500 000), 表示队伍中共有N个人。 接下来的N行中,每行包含一个整数,表示人的高度,以毫微米(...原创 2019-10-22 21:28:18 · 512 阅读 · 1 评论 -
Largest Rectangle in a Histogram POJ - 2559(直方图最大面积,单调栈)
直方图中最大的矩形 题目 提交记录 讨论 题解 视频讲解 直方图是由在公共基线处对齐的一系列矩形组成的多边形。 矩形具有相等的宽度,但可以具有不同的高度。 例如,图例左侧显示了由高度为2,1,4,5,1,3,3的矩形组成的直方图,矩形的宽度都为1: 2559_1.jpg 通常,直方图用于表示离散分布,例如,文本中字符的频率。 现在,请你计算在公共基线处对齐的直方图中最大矩形的面积。 图例右图显...原创 2019-08-19 22:21:19 · 289 阅读 · 0 评论 -
D - Mike and Feet CodeForces - 548D(单调栈)
Mike is the president of country What-The-Fatherland. There are n bears living in this country besides Mike. All of them are standing in a line and they are numbered from 1 to n from left to right. i-...原创 2019-03-28 00:08:43 · 271 阅读 · 0 评论