滑動最小值

2022-08-22 01:51:11 字數 920 閱讀 4915

時間限制: 1 sec  記憶體限制: 128 mb

提交: 127  解決: 27

[提交] [狀態] [討論版] [命題人:admin]

題目描述

給定乙個長度為 n 的數列 a0,a1,,⋯,an−1和乙個整數k。求數列 bi=min(ai,ai+1 ,⋯,ai+k−1)(i∈[0,n))。

特別的,對於 i>n−k 的 bi=0。

輸入第一行兩個正整數n,k。

第二行n個正整數a。

輸出n個數b。

複製樣例資料

5 2

1 2 3 4 5

樣例輸出
1 2 3 4 0

提示

對於100%的資料,n≤1000000。

#include#define rep(i, a, b) for(int i = (a); i <= (b); ++ i)

#define rep(j, a, b) for(int j = (a); j <= (b); ++ j)

#define per(i, a, b) for(int i = (a); i >= (b); -- i)

#define rep(i, a, b) for(int k = (a); k <= (b); ++ k)

using

namespace

std;

template

inline

void rd(t &ret)

}const

int maxn=1e2+6

;int

n,a[maxn],k,b[maxn];

intp[maxn];

intmain()

}for(int i=0;i"

%d "

,b[i]);

}

滑動視窗求解最大 最小值問題

結論 求最大值時使用雙端對維護遞減資料,即佇列中資料依次遞減,佇列頭部資料始終為最大值,每次將遍歷到的資料與佇列尾部的資料進行比較 如果不違反佇列的遞減規律 遍歷到的資料元素小於佇列尾部資料 就直接插入佇列尾部 如果違反了佇列的遞減規律就依次從佇列尾部彈出資料,直到找到能夠保持佇列遞減規律的位置。求...

最大最小值

示例一 maximum lambda x,y x y x x y y 注意 x y 返回的是0或者1 minimum lambda x,y x y y x y x a 10 b 20 print the largar one is d maximum a,b print the lower one ...

單調佇列在滑動最小值方面的應用

我們來看看,這樣乙個問題,poj 2823 sliding window 給定乙個序列 a1 a2,ai,a n 讓你構造乙個陣列b,b i min 對於這個問題我們當然可以用rmq等資料結構在 o nlgn 的時間內解決,可是這個資料結構首先是太難寫了,二是複雜度還可以降低.這種佇列滿足乙個關係及...