poj 2823 Sliding Window
来源:互联网 发布:网络爬虫 登陆 编辑:程序博客网 时间:2024/05/29 08:17
单调队列的应用。
#include <cstdio>#include <deque>#include <iostream> using namespace std;#define max_n 1000005#define inf 0x3f3f3f3fdeque<int> m_min,m_max;int data[max_n];int n,k;void getmax();void getmin();int main(){scanf("%d%d",&n,&k);for(int i = 1;i<=n;i++)scanf("%d",&data[i]);getmin();getmax();}void getmin(){data[0] = inf;m_min.push_back(0);for(int i=1;i<=n;i++){if(data[i]>=data[m_min.back()]){m_min.push_back(i);}else{do{m_min.pop_back();}while(!m_min.empty()&&data[m_min.back()]>data[i]);m_min.push_back(i);}if(i-m_min.front()+1>k)m_min.pop_front();if(i>=k){printf("%d ",data[m_min.front()]);}}printf("\n"); }void getmax(){data[0] = -inf;m_max.push_back(0);for(int i=1;i<=n;i++){if(data[i]<=data[m_max.back()]){m_max.push_back(i);}else{do{m_max.pop_back();}while(!m_max.empty()&&data[m_max.back()]<data[i]);m_max.push_back(i);}if(i-m_max.front()+1>k)m_max.pop_front();if(i>=k){printf("%d ",data[m_max.front()]);}}printf("\n"); }
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
- Sliding Window poj 2823
- POJ 2823 Sliding Window
- poj 2823 Sliding Window
- POJ 2823 Sliding Window
- HDU1241 深搜
- NYOJ Rectangles--1255第七届
- 机房收费系统总结篇(一)
- linux内核打补丁步骤
- 项目36-数组类运算的实现
- poj 2823 Sliding Window
- 如何对齐多个对象
- UIView
- 【HDU】 1211 RSA
- ActionBar
- 最近遇到.net framework安装不上问题1603问题号,原来是360捣鬼
- java教程:Java编程风格与命名规范整理
- 【C++】heap corruption detected错误调试总结及拓展
- OpenCV基础知识