单调队列
文章平均质量分 55
zstu_yezhaodan
这个作者很懒,什么都没留下…
展开
-
单调队列(基础题) HDU3706 Second My Problem First
:点击打开链接 题意:对于S i = A i,在(1 我是看了题解才明白题意的orzorz 然后注意一点,因为a的范围就是int 的最大值,所以x要设成long long 类型不然相乘就会超int的 和前面一题不一样,这题只求最前面的那个值,和最大最小区间没关系,所以是一道基础题啦啦啦 #include using namespace std; int main(){原创 2016-05-28 11:03:25 · 312 阅读 · 0 评论 -
单调队列 POJ 2559 Largest Rectangle in a Histogram
这道题交的时候神奇ac了,感觉好开心wakaka 题意:在给出的方块的组合图形中找到最大的矩形,并输出最大矩形的面积! 从第一个位置到第n个位置循环,循环操作为:找出当前位置右边的比它低的位置,说明已经不能继续延伸了,算出这种情况下的面积在比较看是否为最大面积 注意队列中有两个元素,一个是当前的高度,另一个是起始的位置, #include #include #include #includ原创 2016-05-29 12:50:48 · 344 阅读 · 0 评论 -
单调队列 CodeForces 91B Queue
这道题是是在插入时就保证单调,不用弹出,所以不用双端队列deque也可以做, 而且因为要用到lower_bound(),查了一下好像deque不支持lower_bound(); 所以用两个vector分别记录下标和对应的值,注意else部分涉及lower_bound()返回值的问题ops #include using namespace std; int num[100005]; i原创 2016-05-31 21:38:48 · 895 阅读 · 0 评论 -
单调队列HDU 4374 One hundred layer
题意:在n层每层m个房间的地图中,走过每个房间都可以获得一定的money,但是每层只可以经过t个房间,可以从一个房间直接掉到下一层的同一位置的那个房间,给出x为起始位置。 对于任意一个点可能有两种到达方法一种是直接从上面掉下来,另一种是从旁边过来。 正在学队友的代码风格所以可能整体有点错乱: #include using namespace std; #define MAXN 110 #原创 2016-05-20 19:40:10 · 321 阅读 · 0 评论 -
单调队列 HDU 3530 Subsequence
要注意的一点是:如果差值要大于k则要在已有的单调队列中删去最大或者最小值; 如果小于m,在已有的单调队列中改动是没有用的,应该引进新的数值: #include using namespace std; int num[100000+10]; int main(){ int n,m,k; while(scanf("%d%d%d",&n,&m,&k)!=EOF){原创 2016-05-21 13:26:32 · 398 阅读 · 0 评论