poj2823:单调队列入门题
2014-10-12 21:03
447 查看
今天学习了一下单调队列这种数据结构,思想不是很难
参考资料:/article/5051962.html
然后自己写成了类的模板形式,并做了例题poj2823
代码如下:
参考资料:/article/5051962.html
然后自己写成了类的模板形式,并做了例题poj2823
代码如下:
#include <iostream> #include <stdio.h> #include<string.h> #include<algorithm> #include<string> #include<ctype.h> using namespace std; #define maxn 10000010 typedef struct Node { int val; int num; }node; typedef struct iqueue { node q[maxn]; int l,r; void ini() { l=0; r=0; } node front() { return q[l]; } node pop() { l++; return q[l-1]; } void push(node x) { if(r==l) { q[r++]=x; return; } if(x.val>=q[l].val) { r=l; q[r++]=x; return; } while(r>=1&&x.val>=q[r-1].val) { r--; } q[r++]=x; } }Iqueue; typedef struct dqueue { node q[maxn]; int l,r; void ini() { l=0; r=0; } node front() { return q[l]; } node pop() { l++; return q[l-1]; } void push(node x) { if(r==l) { q[r++]=x; return; } if(x.val<=q[l].val) { r=l; q[r++]=x; return; } while(r>=1&&(x.val<=q[r-1].val)) { r--; } q[r++]=x; } }Dqueue; int big[1000010]; int small[1000010]; Iqueue qi; Dqueue qd; int main() { int n,k; while(scanf("%d%d",&n,&k)!=EOF) { node x; node s,b; int t=0; qi.ini(); qd.ini(); for(int i=1;i<=n;i++) { scanf("%d",&x.val); x.num=i; qi.push(x); qd.push(x); if(i>=k) { b=qi.front(); while(b.num<=i-k) { qi.pop(); b=qi.front(); } s=qd.front(); while(s.num<=i-k) { qd.pop(); s=qd.front(); } big[t]=b.val; small[t++]=s.val; } } for(int i=0;i<t;i++) { printf("%d",small[i]); if(i==t-1) puts(""); else printf(" "); } for(int i=0;i<t;i++) { printf("%d",big[i]); if(i==t-1) puts(""); else printf(" "); } } return 0; }
相关文章推荐
- POJ2823 单调队列优化入门
- poj2823(单调队列入门)
- poj2823_单调队列简单入门
- 单调队列--poj2823 从入门到放弃
- 单调队列入门(Jacob's zone)
- POJ2823(单调队列)
- 单调队列1001 HDU 3706 Second My Problem First 单调队列入门题
- poj2823(单调队列)
- poj2823 单调队列
- 单调队列入门
- HDU 2993 MAX Average Problem(斜率优化入门+单调队列)
- [POJ2823]Sliding Window(单调队列)
- POJ 2823 单调队列入门题
- POJ2823--Sliding Window(单调队列)
- poj2823单调队列(模拟优先队列)
- POJ2823 Sliding Window(单调队列)
- poj2823(单调队列)
- 股票交易 【SCOI 2010】HDU 3401 (单调队列优化DP入门)
- POJ2823 Sliding Window(单调队列)
- [poj2823]sliding windows(单调队列模板题)