luoguP1886 滑動視窗 單調佇列

2022-06-03 07:42:11 字數 1185 閱讀 1020

現在有一堆數字共n個數字(n<=10^6),以及乙個大小為k的視窗。現在這個從左邊開始向右滑動,每次滑動乙個單位,求出每次滑動後視窗中的最大值和最小值。

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

輸入格式:

輸入一共有兩行,第一行為n,k。

第二行為n個數(輸出格式:

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

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

輸入樣例#1:

8 3

1 3 -1 -3 5 3 6 7

輸出樣例#1:

-1 -3 -3 -3 3 3

3 3 5 5 6 7

50%的資料,n<=10^5

100%的資料,n<=10^6

用單調佇列構成的滑動視窗

忘了復原l和r竟有90?

1 #include2 #include3 #include4

using

namespace

std;56

const

int maxn=1000005;7

8int

n,d,l,r;

9int

a[maxn],val[maxn],site[maxn];

10int

mx[maxn],mn[maxn];

1112

intmain()

23 l=1; r=1;24

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

30for(int i=d;i<=n;i++) printf("

%d "

,mn[i]);

31 putchar('\n'

);32

for(int i=d;i<=n;i++) printf("

%d "

,mx[i]);

33 putchar('\n'

);34

return0;

35 }

luogu P1886 滑動視窗

現在有一堆數字共n個數字 n 10 6 以及乙個大小為k的視窗。現在這個從左邊開始向右滑動,每次滑動乙個單位,求出每次滑動後視窗中的最大值和最小值。例如 the array is 1 3 1 3 5 3 6 7 and k 3.輸入格式 輸入一共有兩行,第一行為n,k。第二行為n個數 輸出格式 輸出...

Luogu P1886 滑動視窗

傳送門此題為單調佇列入門題。單調佇列,可以 o n 求一段數列中區間極值。記錄佇列中元素大小與該元素在原陣列中的位置。當隊首元素超出當前求值區間時,頭指標加一 當當前將入隊元素大於或小於尾元素時,尾指標減一,直到不符合上一條件時,將當前元素入隊。然後要求極值只需輸出隊首元素即可。include co...

Luogu P1886 滑動視窗

題目鏈結 單調佇列優化dp板子 單調佇列優化dp定長連續區間最值問題 include include define fora i,s,e for int i s i e i define fors i,s,e for int i s i e i define gc getchar pa pb pb ...