資料結構之單調佇列

2022-07-11 13:27:13 字數 1222 閱讀 2527

dev.c++資料結構之單調棧:從數學上來講,函式的單調性也可以叫做函式的增減性。當函式f(x) 的自變數在其定義區間內增大(或減小)時,函式值f(x)也隨著增大(或減小),則稱該函式為在該區間上具有單調性。換句話來說,函式的單調性就是在區間內的自變數只增或只減。

我們說,數學中函式在一段區間內自變數只增或只減,那麼這個函式在這個區間內具有單調性。

那麼,這和單佇列有什麼關係呢?單調佇列,你可以理解為乙個公升序或降序佇列。另外的,單調佇列可以從隊首出隊,也可以從隊尾出隊。這裡給出一道例題。

單調佇列洛谷模板題(滑動視窗)

這裡我給出乙個陣列**

#include#define maxn 1000100

using namespace std;

int k,n,a[maxn],f,r,maxn[maxn],minn[maxn];

inline int read()

while(ch>='0'&&ch<='9')s=s*10+ch-'0',ch=getchar();

return s;

}int main()

maxn[++r]=i;

if(r(除了快讀純手打)

日常變數解釋:

這道題並不難。

它的思想就是:

①不符合單調性的出隊

②該元素入隊

③特判:當隊尾在隊首之前時,證明隊首未正常重新整理,進行重新整理。

④重點特判:與題目有關

⑤:同④

重點特判是什麼?

首先,我們看一下題目,可以知道這是乙個視窗乙個視窗的掃,每次向右移1個單位。

燃鵝,我們的for是乙個元素乙個元素的掃。所以,要在它i指標比視窗大時,再進行運算。

這是乙個重點特判,有些童鞋看luogu題解時,傻乎乎的就沒有打這個特判,要注意哦。

同樣,佇列最大只能和視窗一樣大,否則視窗不給撐爆了?當視窗比佇列長度小的時候,要讓隊首指標向前挪乙個單位。

然後再輸出就好了。

最後想說:單調棧不能算是乙個資料結構,本質上是一種演算法,就像單調棧一樣(不知道單調棧的戳這)。要多理解哦!

資料結構 單調棧,單調佇列

乙個單調遞增棧的例子 進棧元素分別為3,4,2,6,4,5,2,3 第i步操作結果1 3進棧3 23出棧,4進棧43 2進棧4 2 42 4出棧,6進棧65 4進棧6 4 64出棧,5進棧 6 57 2進棧6 5 2 82出棧,3進棧 6 5 3 對於乙個元素i 在 尾部 新增元素 while r ...

資料結構基礎 單調佇列

單調佇列一般是具有單調性的佇列,單調佇列有單調遞增和單調遞減兩種,一般來講,佇列的隊首是整個佇列的最大值或最小值,它的思想也是在決策集合 佇列 中及時排除一定不是最優解的選擇。單調佇列是優化動態規劃的乙個重要手段。具體實現步驟 維護單調單調遞增佇列 若隊列為空,將s i 從隊尾入隊。若佇列不為空,將...

資料結構 單調棧與單調佇列

830.單調棧 154.滑動視窗 79.滑動視窗的最大值 單調棧的應用場景 求最近的最值 單調佇列的應用場景 求滑動視窗內的最值 單調佇列步驟 值得注意的是單調佇列存的是下標,方便判斷隊頭是否滑出視窗 1.判斷隊頭是否滑出視窗 2.判斷完之後那麼隊頭就是滑動視窗的最值,處理題目邏輯 順序不一定在2,...