洛谷P1886 滑動視窗 單調佇列

2022-09-03 05:51:05 字數 1042 閱讀 1663

給出n

,m' role="presentation">n,m

n,m和乙個含有

n' role="presentation">n

n個元素的數列,求每個連續的長度為

m' role="presentation">m

m的子串的最小值和最大值。暴力o

(n2)

' role="presentation">o(n

2)o(

n2),可以用單調佇列優化。

每次維護兩個單調佇列,保證答案就是ma

xn.f

ront

()' role="presentation">max

n.fr

ont(

)max

n.fr

ont(

)和mi

nn.f

ront

()' role="presentation">min

n.fr

ont(

)min

n.fr

ont(

),並及時將早來的踢掉,後來的入隊。時間複雜度o(

n)' role="presentation">o(n

)o(n

)。

#include 

#include

#include

using

namespace

std;

deque

minn;

deque

maxn;

int n,m,a[1000001],ans_min[1000001],ans_max[1000001];

int main()

}for (int i=1;i<=n-m+1;i++)

printf("%d ",ans_min[i]);

printf("\n");

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

printf("%d ",ans_max[i]);

return

0;}

單調佇列 洛谷P1886 滑動視窗

題目鏈結 dalao題解 題目給乙個長度為n的序列,然後給乙個值k,要求出長度為k的視窗在數列滑動過程中的最大值和最小值 圖示如下 比如給乙個長度為n 8的序列為 1 3 1 3 5 3 6 7 視窗長度是k 3 那麼視窗滑動中的 最小值就是 1 3 3 3 3 3 最大值就是 3 3 5 5 6 ...

洛谷 P1886 滑動視窗 單調佇列

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

洛谷P1886 滑動視窗 單調佇列

沒想到啊沒想到,時隔兩個月,我單調佇列又懵了 調了乙個小時,最後錯在快讀,啊!不過洛谷討論真好啊,感謝大佬!考前就不推新東西了,好好寫寫那些學過的東西 題目點這裡 我就不粘了自己點一下看吧 這題還有其他奇奇怪怪的做法,比如你可以當做rmq,用線段樹啊st表啊隨便你,不過單調佇列就可以了 單調佇列說到...