Luogu P1886 滑動視窗

2022-05-20 13:39:06 字數 946 閱讀 6301

題目鏈結

單調佇列優化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=(pa=buf)+fread(buf,1,100000,stdin),stdin)?eof:*pa++

#define file(name) freopen(name".in","r",stdin);freopen(name".out","w",stdout);

using

namespace

std;

char buf[100000],*pa,*pb;

inline

intread();

const

int n=1e6,k=1e6;

int n,k,a[n+1

];int head,tail,num[k+1],q[n+1

];/*

單調佇列,num記錄的是單調佇列中元素在輸入資料中的編號,q代表的是元素在輸入資料中的值

*/void

solve_min()

printf("\n

");}void

solve_max()

}int

main()

inline

intread()

確定動規模型

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...

luoguP1886 滑動視窗 單調佇列

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