單調佇列 滑動視窗 模板 單調佇列

2021-10-09 01:37:16 字數 963 閱讀 7388

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

the array is [1,3,−1,−3,5,3,6,7] and k=3。

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

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

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

8 31 3 -1 -3 5 3 6 7

-1 -3 -3 -3 3 3

3 3 5 5 6 7

對於 50% 的資料,1≤n≤105;

對於 100% 的資料,1≤k≤n≤1061,ai∈[−231,231)。

#include

#include

using

namespace std;

long

long n,k,et,er,h1,h2,tail1,tail2,a[

1000005

],b[

1000005

],c[

1000005

],q1[

1000005

],q2[

1000005

],p1[

1000005

],p2[

1000005];

intmain()

for(

int i=

1;i<=et;

++i)

printf

("%lld "

,b[i]);

printf

("\n");

for(

int i=

1;i<=er;

++i)

printf

("%lld "

,c[i]);

return0;

}

佇列 單調佇列 滑動視窗

總時間限制 12000ms 記憶體限制 65536kb 描述給定乙個長度為n n 10 6 的陣列。有乙個大小為k的滑動視窗從陣列的最左端移動到最右端。你可以看到視窗中的k個數字。視窗每次向右滑動乙個數字的距離。下面是乙個例子 陣列是 1 3 1 3 5 3 6 7 k 3。視窗位置 最小值最大值 ...

單調佇列 滑動視窗

nkoj 2152 description 給你乙個長度為n n 10 6 的陣列,乙個長為k的滑動的窗體從最左移至最右端,你只能見到視窗的k個數,每次窗體向右移動一位,找出窗體所包含的數字的最大和最小值,如下表所示 k的值為3 視窗位置 最小值 最大值 1 3 1 3 5 3 6 7 1 3 1 ...

滑動視窗 單調佇列

給定乙個大小為n 106的陣列。有乙個大小為k的滑動視窗,它從陣列的最左邊移動到最右邊。您只能在視窗中看到k個數字。每次滑動視窗向右移動乙個位置。以下是乙個例子 該陣列為 1 3 1 3 5 3 6 7 k為3。視窗位置 最小值 最大值 1 3 1 3 5 3 6 7 1 3 1 3 1 3 5 3...