单调队列
文章平均质量分 81
cscoder
这个作者很懒,什么都没留下…
展开
-
POJ 2823 Sliding Window
Sliding Window 题目意思很简单,求解给定一个区间中的最小与最大,但此题不适合用线段树解,因为区间动态的变化。用单调队列比较适合,也可以用2个堆来维护,一个维护最大,一个维护最小。用单调队列实现的程序如下: /* ID: csuchenan PROG: POJ 2823 LANG: C++ */ #include const int maxn = 1000000 ; #defi原创 2012-05-20 12:34:51 · 364 阅读 · 0 评论 -
FZUOJ 1894 志愿者选拔
FZUOJ 1894 志愿者选拔 从一个数字序列中不断的求当前序列的最大值。采用单调队列。维护一个单调递减的队列,注意删除的时候,比较当前的最大元素即当前的队列头的位置,如果这个位置大于要删除的位置,则不需要移动,否则就将队首指针移动。程序如下: /* ID : csuchenan PROG : fzuoj 1894 LANG : C++ */ #include #include #def原创 2012-05-20 13:47:18 · 702 阅读 · 0 评论 -
hduoj 3415 Max Sum of Max-K-sub-sequence
Max Sum of Max-K-sub-sequence 求解一个数字环中的长度不超过k的连续之和,使得和最大,若存在多个,输出起始位置最小的,同时,长度最短的。 一个单调队列的问题,需要对问题有一个很清楚的了解。设nsum[i]表示前i个数字的和,那么很容易,表示出从i+1 开始的到位置j结束的这串数字的和: nsum[j] - nsum[i],由此我们就可以很容易,得到此问题的解,max原创 2012-05-21 21:03:39 · 736 阅读 · 0 评论 -
hdu 4123 Bob’s Race 树形DP + 单调队列
Bob’s Race 在昨天的模拟赛中,有一种情况没想明白,就没怎么写了。今天又想了一下,其实和hdu4008很像。然后重新写了一遍就AC了,看来树形DP的题目还得好好写写。 说一下思路:分为求每个点出发的最长路和求最长区间两个阶段。关于求最长区间的可以直接采用单调队列,hdu3530便是一个求最长区间的问题。主要说一下求每个点的出发的最长路。 求最长路:两个DFS. 第一次DFS,我们原创 2012-09-02 18:25:16 · 1061 阅读 · 0 评论