洛谷1886 滑動視窗 模板 單調佇列

2021-10-07 14:47:52 字數 787 閱讀 2307

1886

題目描述

有乙個長為 nn 的序列 aa,以及乙個大小為 kk 的視窗。現在這個從左邊開始向右滑動,每次滑動乙個單位,求出每次滑動後視窗中的最大值和最小值。

例如:the array is [1,3,-1,-3,5,3,6,7], and k = 3。

輸入格式

輸入一共有兩行,第一行有兩個正整數 n,kn,k。 第二行 nn 個整數,表示序列 aa

輸出格式

輸出共兩行,第一行為每次視窗滑動的最小值

第二行為每次視窗滑動的最大值

#include

using

namespace std;

typedef

long

long ll;

const

int maxn =

1e6+5;

int n, m;

ll maxx[maxn]

, minn[maxn]

, a[maxn]

;struct node

v[maxn]

;void

getmax()

if(i >= m)

} cout << endl;

}void

getmin()

if(i >= m)

} cout << endl;

}int

main()

getmin()

;getmax()

;return0;

}

洛谷 1886 滑動視窗 單調佇列

單調佇列,就是字面意思。如何維護?假設我們是單調減的佇列 維護時,保證所有元素最多進隊一次出隊一次,複雜度o n 我們在隊頭放最大的元素,向右依次遞減。在隊尾插入新元素時,檢查新元素是否比隊尾元素大 是,則刪除隊尾元素,直到 比隊尾元素小時,插入新元素在隊尾。同時還要檢查一下,是否還在視窗範圍內 i...

洛谷P1886 滑動視窗 模板 單調佇列

傳送門 難度普及 提高 如題,單調佇列板子題。單調佇列是乙個雙端佇列,頭和尾都可以出元素。本文對單調佇列的實現進行簡述 模擬,方便理解,然後給出完整ac 因為求最大值與求最小值的思路是基本相同的,所以以求最小值為例進行分析,即對void minqueue 進行分析。int h 0,t 1 隊首h,隊...

單調佇列 洛谷P1886 滑動視窗

題目鏈結 dalao題解 題目給乙個長度為n的序列,然後給乙個值k,要求出長度為k的視窗在數列滑動過程中的最大值和最小值 圖示如下 比如給乙個長度為n 8的序列為 1 3 1 3 5 3 6 7 視窗長度是k 3 那麼視窗滑動中的 最小值就是 1 3 3 3 3 3 最大值就是 3 3 5 5 6 ...