![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单调栈
pubgoso
这个作者很懒,什么都没留下…
展开
-
2018-2019 ACM-ICPC, Asia Nakhon Pathom Regional Contest A.Flying Squirrel 单调栈+区间最大值+dfs
思路:先预处理出每个元素i的最大值覆盖区间[li,ri][l_i,r_i][li,ri]。然后让i和[li,i),(i,ri][l_i,i),(i,r_i][li,i),(i,ri]中的最大值连边。随后dfs从最大值开始dfs找到每个点的深度和距离所有子节点的最大距离。 询问y=0 即找到子节点的最大距离。 询问y!=0 :先判断大的值的区间是否能覆盖到小的值,能覆盖答案显然就是两者的深度之差。 细节 见代码: #pragma GCC optimize(2) #pragma GCC optimize原创 2020-12-09 17:21:41 · 176 阅读 · 0 评论 -
2019 acm-icpc银川站K. Largest Common Submatrix 单调队列
题意:给你两个矩阵让你求出最大相同的子矩阵的面积。 两个矩阵中的元素是两个1到n*m的排列 思路:广告牌问题 先预处理出每个元素向上最远到达的地方。 然后枚举底边,对每个底遍历右边界,维护一个单调递增的单调队列,中间在维护一下每个元素最左到达的地方。 每次出队的时候更新一下答案,出队的时候因为是新值小于队尾的值,所以是以自己为基准,所以更新答案是:ans=max(ans,(j−q[t].se)∗q...原创 2019-10-30 21:21:17 · 660 阅读 · 0 评论 -
2019牛客暑期多校训练营(第八场)A All-one Matrices(单调栈)
题目链接 大意:给你一个01矩阵,求全1的极大子矩阵的个数 思路:我们考虑用单调栈解决,先预处理出每个1向上能延伸的最大高度u[i][j]u[i][j]u[i][j],然后我们枚举下边界,然后每个边界遍历每列,维护一个高度递增的单调栈,每个元素记录向左能延申到的最小位置pospospos,每次弹出的元素若满足向下无法延申的情况即可计入答案。 #include<bits/stdc++.h>...原创 2019-08-18 21:22:48 · 91 阅读 · 0 评论 -
2019 计蒜之道 初赛 第五场 浪潮面试题之数组(单调栈)
题目链接 题目大意: 思路:用单调栈维护最优决策的集合。 我们倒着遍历数组,每次遍历到的相当于iii, 每次新建一个决策{ai,li,ri,x}\left\{ a_i,l_i,r_i,x\right\}{ai,li,ri,x},意为:当前最优xxx位置的时候包含的右端点区间为li,ril_i,r_ili,ri,然后更新是在top的两个决策之间,设两个决策分别为new={a1,l1,r1...原创 2019-09-02 21:04:04 · 142 阅读 · 0 评论