POJ 2823 Sliding Window (单调队列)
来源:互联网 发布:供销大数据集团多少人 编辑:程序博客网 时间:2024/06/16 01:42
题目链接:http://poj.org/problem?id=2823
这题要求最值,因而想到用堆,又因为要保留的仅仅是在窗口以内的数据,所以可以将数据的下标放入队列中,当堆顶元素超出窗口时将其弹出(下标超标),以满足题目要求。
代码如下:
内存:
47124kB
时间:
1524ms
语言:
G++
#include <iostream>#include <queue>#include <vector>const int MAXN = 1000050;using std::priority_queue;using std::vector;int arr[MAXN], MAX[MAXN], MIN[MAXN], count;struct greater{public: bool operator()(const int one, const int two) { return arr[one] > arr[two]; } };struct less{ bool operator()(const int one, const int two) { return arr[one] < arr[two]; }};priority_queue< int, vector<int>, less > max_que;priority_queue< int, vector<int>, greater > min_que;voidinit(int k){ for(int i = 0; i < k; ++i) { max_que.push(i); min_que.push(i); } MAX[count] = arr[max_que.top()]; MIN[count++] = arr[min_que.top()];}void print(int arr[]){ for(int i = 0; i < count ; ++i) printf("%d ", arr[i]); printf("\n");}intmain(){ int n, k; scanf("%d %d", &n, &k); if(k > n) k = n; for(int i = 0; i < n; ++i) scanf("%d", &arr[i]); init(k); for(int i = k; i < n; ++i) { max_que.push(i); min_que.push(i); while(i - max_que.top() >= k) { max_que.pop(); } while(i - min_que.top() >= k) { min_que.pop(); } MIN[count] = arr[min_que.top()]; MAX[count++] = arr[max_que.top()]; } print(MIN); print(MAX); return 0;}
阅读全文
0 0
- poj 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window(单调队列)
- poj 2823 Sliding Window(单调队列)
- poj 2823 Sliding Window ( 单调队列 )
- POJ 2823 Sliding Window (单调队列)
- poj 2823 Sliding Window(单调队列)
- poj - 2823 - Sliding Window(单调队列)
- POJ 2823 Sliding Window (单调队列)
- POJ 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window (单调队列)
- POJ 2823 Sliding Window(单调队列)
- poj 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window(单调队列)
- [POJ 2823] Sliding Window (单调队列)
- 【POJ 2823】Sliding Window(单调队列)
- 数据结构实验之栈六:下一较大值(二)
- 把jsp+servlet+mysql项目发布到腾讯云服务器,允许外网访问
- git的介绍
- hdu--6121:Build a tree
- caffe中 solver.prototxt文件
- POJ 2823 Sliding Window (单调队列)
- A. K-Periodic Array----思维
- Python高级
- 剑指OFFER--二进制中1的个数
- c# RichTextBox用法——设置指定字符串的颜色
- 函数指针与回调函数的用法
- c++virtual的动态调用验证
- 线程状态及属性
- struts2--struts2标签库(部分)