这道题吧 没计算时间 因为给了那么多 一算还可以 就直接写了线段树,刘汝佳那本模板 然后!poj的g++比C++慢大约500ms。。。。。。。g++tle,C++就过了 Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Sub ...
分类:
其他好文 时间:
2018-05-22 22:20:03
阅读次数:
186
我们知道,上一种算法有一个地方是重复比较了,就是在找当前的f(i)的时候,i的前面k-1个数其它在算f(i-1)的时候我们就比较过了。那么我们能不能保存上一次的结果呢?当然主要是i的前k-1个数中的最大值了。答案是可以,这就要用到单调递减队列。 单调递减队列是这么一个队列,它的头元素一直是队列当中的 ...
分类:
其他好文 时间:
2018-05-17 19:55:12
阅读次数:
164
给定两个数n和k,接下来给出n个数的数列。每次维护一个长度为k的窗口,求出这个范围的最大值和最小值。每次向右移动一个单位。 考虑如何得出一个区间的最大值,每次增加一个数,如果这个数比当前的最大值小,如何是可以不用维护的。如果比当前值大,那么就要考虑。但是当这个最大值在最左边的时候,它下一次就不能在这 ...
题意: 平面上n个点,给出d,求最小的k使得长度为k在某个长度为k横坐标区间内的纵坐标的最大值与最小值之差超过d 题解: 如果做过poj2823这道题的话,这道题应该是挺好想的。(没做过的同学可以点这里) 我们可以二分长度k,然后就和上面这道题的操作一样了。复杂度是O(n*logn),1e5的数据完 ...
分类:
其他好文 时间:
2018-03-14 20:42:52
阅读次数:
155
题意:给定一个序列,求所有滑动窗口内的最值。 解题关键:单调队列裸题,单调递增队列选取最小值,单调递减队列选取最大值。 注意用c++提交,否则会超时。 ...
http://poj.org/problem?id=2823 题意:你有一个长度n的序列,分别询问[1,k],[2,k+1],[3,k+2],...,[n-k+1,n]这n-k+1个区间的最大值和最小值。 单调队列入门题。用两个单调队列分别维护当前最大值和最小值的最优解、次优解、……K优解。 每次拓 ...
Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 62915 Accepted: 17956 Case Time Limit: 5000MS Description An array of size ...
这个裸题,滑动窗口求最大最小值,单调队列来两边,一次单调递增q[s]就是最小值,一次单调递减q[s]就是最大值 cin会超时,解除同步也没用。。。 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> ...
分类:
其他好文 时间:
2017-07-13 01:00:31
阅读次数:
178
题目链接:http://poj.org/problem?id=2823 用RMQ超时了,我想应该是不会的,看discuss说,之前RMQ过了。 维护两个单调队列。 单调递减的队列,每插入一个时: 超过单调队列长度,左移头指针。 第一个或者符合条件,直接加到后面。 否则,一直退; 题目链接:http: ...
分类:
其他好文 时间:
2017-02-16 01:39:56
阅读次数:
231
题目:An array of size n ≤ 10^6 is given to you. There is a sliding window of size k which is moving from the very left of the array to the very right. Y ...
分类:
其他好文 时间:
2016-09-02 20:14:48
阅读次数:
149