单调队列
KIJamesQi
这个作者很懒,什么都没留下…
展开
-
poj2823 Sliding Windows(单调队列果题)
题意:给出n,m接下来n个数。要求第一行输出该序列从左到右每连续m个数中最小的数,共n-m+1个数。第二行要求输出该序列从左到右每连续m个数中最大的数,共n-m+1个数。 思路:简单的单调队列的应用,两个问题共性,就说一个。用一个队列q[...]来存最值,因为区间从左到右的滑动过程中,必然左边不满足距离条件的数需要出队列pos - q[head].pos >= m,也就是超出了询问区间,而且这个值删原创 2016-05-17 21:13:52 · 386 阅读 · 0 评论 -
fzu1894 自愿者选拔
题意:中文题目就不多说了。 思路:单调队列的使用,因为问的是当前排队中的最高rp,所以用个维护最大值的单调队列就好了,出队和询问的时候判断下就好了。 const int maxn = 1e6 + 10; struct node { char *name; int rp; int pos; node() {} node(char c[], int rp,int原创 2016-05-18 12:47:52 · 375 阅读 · 0 评论 -
hdu3415Max Sum of Max-K-sub-sequence(单调队列)
题意:给定一个长n的环形序列a[1]...a[n]。就是a[1]与a[n]是相邻的。问在这个环上取连续且不超过k长度的子序列,求所有满足条件 的子序列的的和的最大值。 思路:求一个前缀和,那么区间[i,j]的和酒可以表示为sum[j] - sum[i-1],ans = max(all(sum[j] - sum[i-1])) (1<=j-i<=k-1),对于j而言只需要求前面满足条件的最小的s[i-原创 2016-05-18 14:58:21 · 455 阅读 · 0 评论 -
单调队列或单调栈的学习及认识
单调队列或单调栈的学习及认识。。。顾名思义,数据是具有某方面的单调性质的(单增或单减等)。单调队列一般是用于优化动态规划方面问题的一种特殊数据结构,且多数情况是与定长连续子区间问题相关联。一、数据结构的认识1.双端队列deque双端队列是一种线性表,遵守先进先出的原则。其支持下面四种操作: (1)从队首删除 (2)从队尾删除 (3)从队尾插入 (4)查询线性表中任一元素的值 2.单调队列单调队列是种原创 2016-05-19 12:27:49 · 1828 阅读 · 0 评论