POJ2823(单调队列)
来源:互联网 发布:淘宝网拍卖车辆提档 编辑:程序博客网 时间:2024/04/30 11:40
注意k等于1的情况。
#include <iostream>#include <cstdio>#include <queue>#include <deque>using namespace std;struct s{int pos;int data;}A[1000000];int main(){int n,k;deque<s> Q;scanf("%d%d",&n,&k);int i;for (i=0;i<=n-1;i++){scanf("%d",&A[i].data);A[i].pos=i;}if (n==1){printf("%d\n",A[0].data);printf("%d\n",A[0].data);}else if (k==1){for (i=0;i<=n-2;i++)printf("%d ",A[i].data);printf("%d\n",A[i].data);for (i=0;i<=n-2;i++)printf("%d ",A[i].data);printf("%d\n",A[i].data);}else{ Q.push_back(A[0]);for (i=1;i<=n-1;i++){while (!Q.empty() && Q.front().data>A[i].data)Q.pop_front();while (!Q.empty() && Q.back().data>A[i].data)Q.pop_back();Q.push_back(A[i]);//printf("A:%d\n",A[i]); if (i-Q.front().pos>k-1) Q.pop_front(); if (i==n-1) printf("%d\n",Q.front().data); else if (i>=k-1)printf("%d ",Q.front().data);}Q.clear(); Q.push_back(A[0]);for (i=1;i<=n-1;i++){while (!Q.empty() && Q.front().data<A[i].data)Q.pop_front();while (!Q.empty() && Q.back().data<A[i].data)Q.pop_back();Q.push_back(A[i]);//printf("A:%d\n",A[i]); if (i-Q.front().pos>k-1) Q.pop_front(); if (i==n-1) printf("%d\n",Q.front().data); else if (i>=k-1)printf("%d ",Q.front().data);}}return 0;}
- poj2823 单调队列
- 单调队列 POJ2823
- 单调队列 (POJ2823)
- POJ2823单调队列
- poj2823单调队列
- POJ2823 单调队列
- poj2823(单调队列)
- poj2823(单调队列)
- 单调队列-poj2823
- POJ2823(单调队列)
- poj2823(单调队列)
- poj2823(单调队列)
- poj2823-单调队列
- poj2823 单调队列
- POJ2823 单调队列
- POJ2823 --单调队列
- 单调队列 poj2823
- POJ2823 单调队列
- 平衡点问题
- 淘宝面试题猜数字游戏
- 微软、google、雅虎、百度等各大著名公司的经典面试题的python实现!
- Python 面试题 - 堆排序 & 演算过程
- OPENCV中cvFindContours函数说明
- POJ2823(单调队列)
- [WinForm]最小化到系统托盘,右键退出
- 如何用Python来进行查询和替换一个文本字符串?
- BC30138: 无法在路径“C:\WINDOWS\TEMP\”中创建临时文件: 拒绝访问
- web前端工程师面试题
- MATLAB常用命令
- 硅谷砖石王老五 VS. 上海海龟单身汉的一天
- php-zmq
- javascript监听iframe加载完成事件