【单调队列 / 单调栈】
sugarbliss
我想要的不多,只是和多数人不一样。
展开
-
POJ - 2823 Sliding Window(单调队列)
题目链接:https://vjudge.net/problem/POJ-2823题意:给定一个数列,从左至右输出每个长度为k的数列段内的最小数和最大数。思路:单调队列维护两端,它的头端可以出数,尾部可以进数,通常用于解决局部性的最值问题。单调栈只维护一端,通常维护全局的单调性。单调栈大小没有上限,而单调队列通常有大小限制。所以本题选择用单调队列解。代码中数组的解释:数组用来表示一个单调队列 数组表示单调队列里每个元素在原数组中的下标本题只需维护两个队列(单调递减队列,头部肯定是最大值,.原创 2020-05-23 11:19:20 · 248 阅读 · 0 评论 -
HDU -1506 - Largest Rectangle in a Histogram(单调栈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1506思路1:利用单调栈,可以找到从左 / 右遍历第一个比它小 / 大的元素的位置,我们可以用这个性质预处理每一个矩形高度左右边界(也就是第一个比当前高度小的元素的位置),当我们知道左右第一个比它小的数,去掉这两个比它小的,剩下的都是比它大的了,然后就可以用当前这个高度作为矩形的高度求面积,最后取个...原创 2019-03-19 16:10:13 · 193 阅读 · 0 评论 -
poj-3250-Bad Hair Day(单调栈)
题目链接:http://poj.org/problem?id=3250题意:给你n头牛,每头牛都只能看到比它高的牛,让你求所有牛向右看能看到的总的个数。#include<stdio.h>#include<algorithm>#define ll long longusing namespace std;const int N = 800090;ll to...原创 2019-03-19 16:27:36 · 178 阅读 · 0 评论 -
Educational Codeforces Round 64 (Rated for Div. 2)E. Special Segments of Permutation(单调栈+分治)
题目链接:https://codeforces.com/contest/1156/problem/E题意:给你1 - n的序列并且这n个数只出现一次,定义区间中的最大值为,对于区间,如果,则称这个区间为特殊区间,问你特殊区间有多少个?思路:用单调栈预处理,对于位置从左往右第一个比大的数的位置,从右往左第一个比大的数的位置,那么对于区间都是比小的数,区间也都比小,也就是说是区间的最大值,知道...原创 2019-05-03 16:12:50 · 230 阅读 · 0 评论 -
2019牛客暑期多校训练营(第一场)A - Equivalent Prefixes(单调栈 or 二分+分治+ST表)
题目链接:https://ac.nowcoder.com/acm/contest/881/A题意:两个长度为n的数组,求最大的m,使得1到m之内的所有区间的最小值的位置相同。思路1:构造两个单调递减栈,当栈内元素个数不同时显然不符合题意break即可。#include <bits/stdc++.h>using namespace std;const int N = 1...原创 2019-07-19 14:16:08 · 165 阅读 · 0 评论 -
51nod 1158 全是1的最大子矩阵(单调栈)
题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1158思路:与这一题Largest Rectangle in a Histogram很像,只不过本题需要做m次单调栈(因为有m行),先处理出每一行矩形的高度,然后以每一行为底求矩形的面积即可。#include <bits/stdc++.h>using na...原创 2019-07-21 17:18:24 · 235 阅读 · 0 评论 -
2019牛客暑期多校训练营(第二场)H - Second Large Rectangle(单调栈)
题目链接:https://ac.nowcoder.com/acm/contest/882/H题意:求全是1的次大子矩阵。思路:全是1的最大子矩阵的变形,不能直接把所有的面积存起来然后排序取第二大的,因为次大子矩阵可能在最大子矩阵里面比如:1 0 0 1 1 1 1 1 1 如果全部存起来排序取第二大输出是3,正确答案是4。所以我们求面积的...原创 2019-07-21 17:35:48 · 283 阅读 · 0 评论