poj 2823 Sliding Window 双向队列,学习
刚刚接触队列!!是在惭愧,仔细研读了别人的代码写的!!!!!
用两个队列分别是q1,q2,一个是维护最大值,一个维护最小值,q1里严格遵守从大到小,q2严格遵守从小到大!!!不断输出q1,q2的队首,就是最大值最小值
#include<iostream>
#include<deque>
using namespace std;
const int x=1000010;
int h[x],l[x],a[x];
int main()
{
int n,k;
while(scanf("%d%d",&n,&k)!=EOF)
{
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
deque<int> q1,q2;
q1.clear();
q2.clear();
for(int i=1;i<=n;i++)
{
while(!q1.empty()&&a[i]>a[q1.back()])
q1.pop_back();
while(!q1.empty()&&i-k+1>q1.front())
q1.pop_front();
q1.push_back(i);
h[i]=a[q1.front()];
while(!q2.empty()&&a[i]<a[q2.back()])
q2.pop_back();
while(!q2.empty()&&i-k+1>q2.front())
q2.pop_front();
q2.push_back(i);
l[i]=a[q2.front()];
}
for(int i=k;i<=n;i++)
{
if(i==n)
printf("%d\n",l[i]);
else
printf("%d ",l[i]);
}
for(int i=k;i<=n;i++)
{
if(i==n)
printf("%d\n",h[i]);
else
printf("%d ",h[i]);
}
}
return 0;
}
poj 2823 Sliding Window 双向队列,学习相关推荐
- POJ 2823 Sliding Window (单调队列)
单调队列 加了读入挂比不加更慢.... 而且这份代码要交c++ 有大神G++跑了700ms..... orzorzorz #include<iostream> #include<cs ...
- POJ 2823 Sliding Window
Sliding Window 链接:http://poj.org/problem?id=2823 Time Limit: 12000MS Memory Limit: 65536K Ca ...
- POJ 2823 Sliding Window(单调队列)
http://poj.org/problem?id=2823 题意: 给出数组和滑动窗口的大小,每次输出滑动窗口中的最大值和最小值. 思路: 这题可以算是单调队列的模板题了,分别维护单调递增和单调递减 ...
- 【POJ】2823 Sliding Window
单调队列. 1 /* 2823 */ 2 #include <iostream> 3 #include <sstream> 4 #include <string> ...
- Sliding Window 单调队列解决--经典滑动窗口问题--求窗口的最大值最小值
http://poj.org/problem?id=2823 这就要用到单调递减或单调递增队列来实现,它的头元素一直是队列中的最小值或最大值.我们可以从队列的末尾插入一个元素,可以从队列的两端删除元素 ...
- POJ2823 Sliding Window 单调队列
题目大意 给出一段序列,一个长度一定的窗口从左到右滑动.求窗口滑动到每个位置时窗口内数字的最大值.最小值各是多少.n<=1e6. 总体思路 遇到这种对一个沿着一个方向滑动的区间求最值问题,可以运 ...
- 【POJ - 2823】 Sliding Window(单调队列 用双端队列实现或模拟队列)
题干: An array of size n ≤ 10 6 is given to you. There is a sliding window of size k which is moving f ...
- Sliding Window滑动窗口(单调队列)
Sliding Window滑动窗口 POJ - 2823 目录 Sliding Window滑动窗口 POJ - 2823 题意描述 解题思路 AC代码 An array of size n ≤ 1 ...
- POJ2823 Sliding Window【单调队列】【线段树】【ST表】
Sliding Window POJ - 2823 题意: 给出一个长度为N的序列,通过一个窗口,可以看到序列中连续的K个元素,窗口从最左边出发,每次移动一个单位,对于每次移动,输出当前窗口中的最大值 ...
- Sliding Window(单调队列)
题目 An array of size n ≤ 106 is given to you. There is a sliding window of size k which is moving fro ...
最新文章
- linux kill信号列表
- anaconda配置环境变量
- python3基础知识_python3基础知识梳理
- arguments.callee()事例 参数检验
- github创建一个新的tag
- hashmap储存有向图_以邻接表的形式创建带权值的有向图即有向网
- vscode remote免密登录
- Linux NTP服务配置
- 中海达ihand30手簿详细教程_开盘秒清,中海这次模拟选房结果恐将成真
- ARM体系结构与编程模型总结
- 5G Wifi频段及信道介绍
- Qpainter事件
- 关于CSS居中显示的总结
- 蓝桥杯大赛——练习系统登录
- 火车没有方向盘操纵转向,如何实现换轨?看完涨知识了
- Windows如何彻底删除.sys后缀的流氓文件
- AB计算机总线,什么是总线?简要说明AB、DB、CB的含义及其性能?
- 人工智能应用最多的七大领域解析
- CEF 进程间消息传递
- react - 利用a标签,完成下载及跳转