已知乙個陣列,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 usingnamespace
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 usingnamespace
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。視窗位置 最小值最大值 ...