数据结构——单调栈/单调队列
文章平均质量分 81
XDU_Skyline
Everything is over, everything is just beginning.
展开
-
POJ 2559 Largest Rectangle in a Histogram
1.题目描述:点击打开链接2.解题思路:本题利用单调栈解决。单调栈是满足从栈顶到栈底,元素大小严格递增或者严格递减的栈。对于本题,如果我们可以知道以i为端点,向左可以最远延伸的距离和向右最远延伸的距离,那么最大面积res=max{hi*(R[i]-L[i])|0那么如何高效地计算L[i]和R[i]呢?通过观察我们发现如果在某一处p有h[p]3.代码://#pragma commen原创 2015-08-16 11:25:59 · 607 阅读 · 0 评论 -
#305 (div.2) D. Mike and Feet
1.题目描述:点击打开链接2.解题思路:本题是一道很好的思维题。看好多人用单调栈解决的。这里介绍另一种解决方法:首先,根据题意描述,我们知道连续序列的最小值是关键,如果任意给出一个连续序列,找它的最小值,反而不太方便;但是换个角度,如果知道最小值,求以它为最小值的最大的连续序列!这就简单的多了。即找出这个元素向左可以延伸多远,向右能延伸多远,然后就能求出最大连续序列的长度了。现在的问题是,原创 2015-05-28 13:21:24 · 755 阅读 · 0 评论 -
POJ 2823 Sliding Window
1.题目描述:点击打开链接2.解题思路:本题利用单调队列解决。单调队列和单调栈性质一样,内部元素严格单调递增排列。单调队列的一个典型应用就是本题的求滑动窗口的最值问题。那么怎么求解呢?首先,由于长度为k,因此我们可以先把0到k-1的下标全部试图入队列。在加入元素i时,若队列的末尾的值j满足Aj≥Ai,则不断地取出,直到队列为空或者Aj还可以简单的理解:从头滑到尾可以求出最小值,从尾滑到头可原创 2015-08-16 13:23:45 · 617 阅读 · 0 评论 -
HDU 5033 Building (2014年北京赛区网络赛B题)
1.题目描述:点击打开链接2.解题思路:本题利用单调栈解决。第一次做这个题用的在线处理,找左边和右边的极大值点,最后总是WA,然后才恍然大悟自己的方法错了,因为可能中间是一些低的楼,后面突然出现一个非常高的楼。因此一下子意识到本题要用单调栈来解决。如果用单调栈解决,需要进行离线处理,把询问也当做坐标考虑进去,然后从左往右扫描,使栈中的结点构成的曲线呈现一种下降的,而且是上凸的样子,原创 2015-09-04 22:47:21 · 418 阅读 · 0 评论 -
POJ 2082 Terrible Sets
1.题目描述:点击打开链接2.解题思路:本题的题意比较难懂,实际上就是给你一堆矩形,它们的宽和高都已知了,让你在内部找到一个尽量大的矩形,输出它的面积,单调栈的经典题目,只不过宽需要用前缀和预处理一下。3.代码:#include#include#include#include#include#include#include#include#include#includ原创 2015-10-03 21:04:01 · 352 阅读 · 0 评论 -
例题9-25 轻松爬山 UVa12170
1.题目描述:点击打开链接2.解题思路:本题属于区间dp类问题,根据题意,我们需要修改1到n-2之间的一些h的值,使得相邻2个h值差的绝对值不超过d。因为可以修改的数是一个实数,无法一一枚举,因此需要仔细对问题进行分析。首先,考虑只有3个值的情况:h1, h2, h3。那么根据题意,h2应该在区间[h1-d,h1+d]和[h3-d,h3+d]之间,即h1应该在[max(h1,h3)-d,m原创 2015-10-10 16:03:01 · 1307 阅读 · 3 评论