(单调)队列和(单调)栈
Anxdada
多读书多看报, 少吃零食多睡觉
展开
-
优先队列用法介绍
因为最近比赛需要用到数据结构,所以加深学习了下,这是我看到的一篇比较好的讲优先队列的. 优先队列:顾名思义,首先它是一个队列,但是它强调了“优先”二字,所以,已经不能算是一般意义上的队列了,它的“优先”意指取队首元素时,有一定的选择性,即根据元素的属性选择某一项值最优的出队~ 百度百科上这样描述的: 优先级队列 是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素转载 2017-06-23 09:31:53 · 368 阅读 · 0 评论 -
CodeForces - 681C 【优先队列】
传送门 优先队列在语法(推入,删除)上与普通队列一样,不同在于声明时要这样:priority_queue#include<cstdio> #include<queue> #include<cstring> using namespace std; const int maxn=1000005; struct node { char ch; int x; }op[maxn];int原创 2017-06-23 09:42:24 · 465 阅读 · 0 评论 -
单调队列 和 单调栈
//顾名思义, 就是维护一个严格单调递增或递减的序列. 队列和栈的区别就是他们所特有的性质, 用数组模拟. poj 2823 单调队列 //这个就是一个最简单的单调队列的应用, 具体解释看代码. 后面有进阶的单调队列 . const int maxn=1e6+5; int maxq[maxn],minq[maxn]; int maxans[maxn],minans[maxn],num[原创 2017-07-30 13:53:29 · 537 阅读 · 0 评论 -
HDU - 6319 Ascending Rating 【单调队列 + 逆向思维】
传送门 题目大意: 给定一个序列 a[1..n],对于每个长度为 m 的连续子区间,求出区间 a 的最大值以及从左往右扫描该区间时 a 的最大值的变化次数 思路: 首先最大值很好维护, 主要是count是难点, 所以我们考虑下逆向做, 那么对于一个区间的开始. 后面比它小的都被剔除了. 所以剩下的就是从左往右扫的最大值变化次数,,,, 这样做以后就非常简单了, 复杂度O(n) AC Code...原创 2018-07-31 13:57:04 · 176 阅读 · 0 评论 -
HDU 6406 Taotao Picks Apples 【预处理 + 二分 + 思维(rmq || 线段树)】 多校。 好题!!
传送门 题意: 题意相当于问你改变一个位置之后,从左往右扫描最大值, 这个最大值会改变多少次. 每次改变独立 思路:我们首先要预处理出每一个位置从前往后的答案数, 以及前缀最大值, 还有从后往前的答案数, 前面两个可以边读入边处理, 后面那个需要用到单调队列维护一个最大值来处理, 上次多校出过这样的题. 然后有了这三个东西后, 对于每次的修改, 我们要找的就是修改位置前面是否有比修改后的这个数...原创 2018-08-16 15:08:43 · 303 阅读 · 0 评论