poj 2823 Sliding Window 单调队列或线段树
2020-12-13 05:43
标签:poj 单调队列 acm 算法 题目链接:http://poj.org/problem?id=2823
Description Your task is to determine the maximum and minimum values in the sliding window at each position. Input Output Sample Input Sample Output Source [Submit] [Go Back] [Status]
[Discuss] Home Page Go
Back To top 这道题可以用线段树和单调队列两种方法来完成。 如果用线段树的话可以让节点保存最大值和最小值即可。然后在 query(i,i+m)即可。
也可以用单调队列。单调队列是这样一个队列,队列中的所有元素是单调递增或者单调递减。它可以在队首或队尾删除元素,但是只能在队尾插入元素。由于每个元素入队和出队一次,所以维护队列的均摊时间复杂度为O(1)。
Time Limit: 12000MS
Memory Limit: 65536K
Total Submissions: 38315
Accepted: 11350
Case Time Limit: 5000MS
The array is [1 3 -1 -3 5 3 6 7], and k is 3.
Window position
Minimum value
Maximum value
[1 3 -1] -3 5 3 6 7
-1
3
1 [3 -1 -3] 5 3 6 7
-3
3
1 3 [-1 -3 5] 3 6 7
-3
5
1 3 -1 [-3 5 3] 6 7
-3
5
1 3 -1 -3 [5 3 6] 7
3
6
1 3 -1 -3 5 [3 6 7]
3
7
8 3
1 3 -1 -3 5 3 6 7
-1 -3 -3 -3 3 3
3 3 5 5 6 7
for(int i=1;i
//这题在poj里得用C++交
#include
文章标题:poj 2823 Sliding Window 单调队列或线段树
文章链接:http://soscw.com/essay/31630.html