POJ 2823
来源:互联网 发布:java内存泄露例子 编辑:程序博客网 时间:2024/06/05 15:36
思路:据说是单调队列,我用线段树过的。。。
#include<iostream>#include<cstdio>#define MAX 1000005using namespace std;typedef struct{ int left, right, mid, min, max;}NodeTree;NodeTree node[4*MAX];int maxn, minn, min_num[MAX],max_num[MAX];void BuildTree(int k, int l, int r){ node[k].left = l; node[k].right = r; node[k].mid = (l + r) >> 1; node[k].max = -10000000; node[k].min = 10000000; if(l == r) return; int mid = (l + r) >> 1; BuildTree(k << 1, l, mid); BuildTree(k << 1|1, mid+1, r);}void UpdateTree(int k, int l, int r, int num){ if(node[k].max < num) node[k].max = num; if(node[k].min > num) node[k].min = num; if(node[k].left == node[k].right) return; if(node[k].mid < l) UpdateTree(k << 1|1, l, r, num); else if(node[k].mid >= r) UpdateTree(k << 1, l, r, num); else { UpdateTree(k << 1, l, node[k].mid, num); UpdateTree(k << 1|1, node[k].mid + 1, r, num); }}void GetResult(int k, int l, int r){ if(node[k].left ==l && node[k].right==r) { minn = min(minn, node[k].min); maxn = max(maxn, node[k].max); return; } if(node[k].mid < l) GetResult(k << 1|1, l, r); else if(node[k].mid >= r) GetResult(k << 1, l, r); else { GetResult(k << 1, l, node[k].mid); GetResult(k << 1|1, node[k].mid + 1, r); }}int main(int argc, char const *argv[]) { int n, k, i, temp; freopen("in.c", "r", stdin); while(~scanf("%d%d", &n, &k)) { BuildTree(1, 1, n); for(i = 1;i <= n;i ++) { scanf("%d", &temp); UpdateTree(1, i, i, temp); } int j = 0; for(i = 1;i < n - k + 2;i ++) { minn = 10000000; maxn = -10000000; GetResult(1, i, i+k-1); min_num[j] = minn; max_num[j ++] = maxn; } for(i = 0;i < n - k;i ++) printf("%d ", min_num[i]); printf("%d\n", min_num[i]); for(i = 0;i < n - k;i ++) printf("%d ", max_num[i]); printf("%d\n", max_num[i]); } return 0;}
0 0
- poj 2823
- POJ 2823
- poj 2823
- POJ 2823
- poj 2823
- POj 2823
- POJ 2823
- POJ 2823
- poj-2823
- POJ 2823
- poj 2823
- poj 2823
- poj 2823
- 【POJ】2823
- POJ 2823 Sliding Window
- poj 2823 Sliding Window
- Poj 2823 (单调队列)
- poj 2823【单调队列】
- 最大流算法---Edmond-Karp
- HDU 3549
- POJ 1273
- Codeforce A. Milking cows
- HDU 4006
- POJ 2823
- HDU 4496
- 【转】OSAL内存管理1
- Codeforces 283A
- 第二章 在窗口中绘图GDI
- HDU 3635
- Codeforce 340D
- Codeforces 237C
- Codeforces 115A