單調佇列 滑動區間最值

2022-06-24 15:00:14 字數 687 閱讀 7090

已知乙個陣列,a[1]~a[n]共n項,問1~k, 2~(k+1), 3~(k+2)……(n-k+1)~n這些區間的最大值分別是多少?

第1行2個數,n和k,含義如題中所述。(1<=k<=n<=100000)

接下來1行,有n個數,表示a陣列。(a[i]<=1000000)

1行,共(n-k+1)個數,表示每個區間的最大值。

輸入:

8 35 9 4 2 6 10 4 1

輸出:9 9 6 10 10 10

陣列模擬實現
#include using

namespace

std;

int n, k, a[100005

];int q[100005];//

q存a陣列的下標

intmain()

int l=1,r=1

;

for(int i=1;i<=n;i++)

}

stl雙端佇列

#include using

namespace

std;

int n, k, a[100005

];deque

q;intmain()

for(int i=1;i<=n;i++)

}

單調佇列(求區間最值)

p1440 求m區間內的最小值 題目描述 乙個含有n項的數列 n 2000000 求出每一項前的m個數到它這個區間內的最小值。若前面的數不足m項則從第1個數開始,若前面沒有數則輸出0。輸入輸出格式 輸入格式 第一行兩個數n,m。第二行,n個正整數,為所給定的數列。輸出格式 n行,第i行的乙個數ai,...

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

有乙個長為 n 的序列 a,以及乙個大小為 k 的視窗。現在這個從左邊開始向右滑動,每次滑動乙個單位,求出每次滑動後視窗中的最大值和最小值。the array is 1,3,1,3,5,3,6,7 and k 3。輸入一共有兩行,第一行有兩個正整數 n,k。第二行 n 個整數,表示序列 a 輸出共兩...

佇列 單調佇列 滑動視窗

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