POJ2823 Sliding Window (單調佇列的基本應用)
題目連結:
http://poj.org/problem?id=2823
題意:
給定一個長度為n的序列,求每個長度為k的區間的最大值與最小值
分析:
單調佇列的基本應用
程式碼如下:
<span style="font-size:14px;">#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
const int maxn = 1000010;
int a[maxn];
int main()
{
int n,k;
while(~scanf("%d%d",&n,&k)){
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
deque<int > mmax;
deque<int > mmin;
for(int i=1;i<=n;i++){
while(!mmin.empty()&&a[i]<a[mmin.back()]) mmin.pop_back();
mmin.push_back(i);
if(i>=k){
while(!mmin.empty()&&mmin.front()<=i-k)
mmin.pop_front();
if(i==n)
printf("%d\n",a[mmin.front()]);
else
printf("%d ",a[mmin.front()]);
}
}
for(int i=1;i<=n;i++){
while(!mmax.empty()&&a[i]>a[mmax.back()]) mmax.pop_back();
mmax.push_back(i);
if(i>=k){
while(!mmax.empty()&&mmax.front()<=i-k)
mmax.pop_front();
if(i==n)
printf("%d\n",a[mmax.front()]);
else
printf("%d ",a[mmax.front()]);
}
}
}
return 0;
}
</span>
相關文章
- POJ 2823Sliding Window(單調佇列水題)佇列
- HDU3530 單調佇列的應用佇列
- 單調佇列佇列
- 單調棧/單調佇列佇列
- 單調佇列雙端佇列佇列
- 單調棧 和 單調佇列佇列
- 單調棧和單調佇列佇列
- redis訊息佇列簡單應用Redis佇列
- POJ 2823 單調佇列佇列
- hdu 3415 單調佇列佇列
- HDU 3530 單調佇列佇列
- hdu 3401 單調佇列+DP佇列
- hdu 4122 單調佇列佇列
- 單調佇列最佳化 DP佇列
- 佇列的基本操作佇列
- POJ 3017 單調佇列dp佇列
- hdu4374單調佇列+dp佇列
- 自定義單連結串列佇列的基本介面函式(非迴圈佇列)佇列函式
- uva 11995 棧,佇列,優先佇列,等基本資料結構的應用與理解佇列資料結構
- 佇列-單端佇列佇列
- 訊息佇列系列一:訊息佇列應用佇列
- LeetCode-Sliding Window MaximumLeetCode
- 佇列:佇列線上程池等有限資源池中的應用佇列
- 多重揹包問題的單調佇列優化佇列優化
- Laravel 佇列基本操作Laravel佇列
- 迴圈佇列的基本操作佇列
- netcore下RabbitMQ佇列、死信佇列、延時佇列及小應用NetCoreMQ佇列
- Team Queue (佇列的一種應用)佇列
- java軟引用在佇列的應用Java佇列
- C語言 簡單的佇列(陣列佇列)C語言佇列陣列
- noi.ac #289. 電梯(單調佇列)佇列
- HDU 3530 Subsequence (dp+單調佇列)佇列
- poj3017 dp+單調佇列佇列
- Redis 應用-非同步訊息佇列與延時佇列Redis非同步佇列
- 滑動視窗(Sliding Window)技巧總結
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列
- 順序佇列基本操作佇列
- Laravel Queues 佇列應用實戰Laravel佇列