![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
单调栈
l
shawwwOvO
这个作者很懒,什么都没留下…
展开
-
Early Order(单调栈)
链接 题意: 给定长度为nnn的数列,保证数列中出现数字大小1≤ai≤k1\le a_i\le k1≤ai≤k,要求给出包含[1,k][1,k][1,k]所有数字(每个只出现一次)的字典序最小子序列。(子序列可以不连续) 思路: 由于要求字典序最小,所以要让序列尽可能的单调递增。采用单调栈维护递增数列。 入栈与出栈原则: 在栈中出现过的元素,表示在栈中的这个元素可以作为当前答案,不予以处理,直接continue 当前元素比栈顶元素大⇒\Rightarrow⇒直接加入栈 当前元素比栈顶元素小,找到之前所有原创 2021-03-09 14:13:41 · 122 阅读 · 0 评论 -
Codeforces Round #669 (Div. 2) D. Discrete Centrifugal Jumps(dp、单调栈)
1231 654788f原创 2020-09-10 11:23:59 · 71 阅读 · 0 评论 -
Building(HDU 5033)待补
HDU 5033 题意:给定n个点的下标、高度。q次查询,问qi点向上的最大角度。 好难啊,给定点不是按照1-n然后范围是1e7。我现在思路是用单调栈缩小左右两边遍历的范围,然后在r[i]和l[i]之遍历,角度取最小值。可是这样一来下标就要离散化。 还没看题解、待补 ...原创 2020-02-28 23:06:18 · 116 阅读 · 0 评论 -
Largest Rectangle in a Histogram
link 题意:给定每个点i的上限高度,问最大长方形的面积。 单调栈统计左右小于i处高度的下标记为l[i]、r[i],所以能达到的最大长度为(r[i]-1)-(l[i]+1)+1,即(r[i]-l[i]-1) 遍历t个点,统计最大值 int l[maxn],r[maxn]; int main(){ int t=ird(); while(t){ stack<LL...原创 2020-02-28 21:46:53 · 76 阅读 · 0 评论 -
单调栈
单调栈模板例题C2. Skyscrapers (hard version) 单调栈1 功能:找到从左/右遍历第一个比它小/大的元素的位置 模板 第i个数向左遍历的第一个比小于等于它的元素的位置,记为l[i]。 for(int i=1;i<=n;i++){ while(s.size()&&a[s.top()]>a[i]) s.pop(); ...原创 2020-02-26 23:30:14 · 124 阅读 · 0 评论