poj 2823:Sliding Window
2014-07-11 10:56
190 查看
解题思路:
单调队列
参考:http://blog.csdn.net/heart_dash/article/details/7786258
#include<iostream>
using namespace std;
int a[1000010];
int queue[1000010];
int n,m;
void min_que()
{
int head = 1;
int tail = 0;
for(int i=1;i<=m;i++)
{
while(head<=tail && a[queue[tail]]>a[i])
tail--;
tail++;
queue[tail] = i;
}
for(int i=m;i<=n;i++)
{
while(head<=tail && a[queue[tail]]>a[i])
tail--;
tail++;
queue[tail] = i;
while(queue[head]<i-m+1) head++;
cout<<a[queue[head]]<<" ";
}
cout<<endl;
return;
}
void max_que()
{
int head = 1;
int tail = 0;
for(int i=1;i<=m;i++)
{
while(head<=tail && a[queue[tail]]<a[i])
tail--;
tail++;
queue[tail] = i;
}
for(int i=m;i<=n;i++)
{
while(head<=tail && a[queue[tail]]<a[i])
tail--;
tail++;
queue[tail] = i;
while(queue[head]<i-m+1) head++;
cout<<a[queue[head]]<<" ";
}
cout<<endl;
return;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
min_que();
max_que();
return 0;
}
单调队列
参考:http://blog.csdn.net/heart_dash/article/details/7786258
#include<iostream>
using namespace std;
int a[1000010];
int queue[1000010];
int n,m;
void min_que()
{
int head = 1;
int tail = 0;
for(int i=1;i<=m;i++)
{
while(head<=tail && a[queue[tail]]>a[i])
tail--;
tail++;
queue[tail] = i;
}
for(int i=m;i<=n;i++)
{
while(head<=tail && a[queue[tail]]>a[i])
tail--;
tail++;
queue[tail] = i;
while(queue[head]<i-m+1) head++;
cout<<a[queue[head]]<<" ";
}
cout<<endl;
return;
}
void max_que()
{
int head = 1;
int tail = 0;
for(int i=1;i<=m;i++)
{
while(head<=tail && a[queue[tail]]<a[i])
tail--;
tail++;
queue[tail] = i;
}
for(int i=m;i<=n;i++)
{
while(head<=tail && a[queue[tail]]<a[i])
tail--;
tail++;
queue[tail] = i;
while(queue[head]<i-m+1) head++;
cout<<a[queue[head]]<<" ";
}
cout<<endl;
return;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
min_que();
max_que();
return 0;
}
相关文章推荐
- poj 2823 Sliding Window 双向队列,学习
- POJ 2823 Sliding Window(单调队列)
- 裸的单调队列-poj-2823-Sliding Window
- poj 2823 Sliding Window (线段树,RMQ)
- 【单调队列】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 - dp&单调队列优化
- POJ 2823 Sliding Window (单调队列)
- POJ 2823 Sliding Window 单调队列
- POJ 2823 Sliding Window 单调队列优化DP
- [Poj 2823] Sliding Window