C 單調佇列

2022-08-31 03:12:13 字數 1067 閱讀 1140

題目描述:有n(n<=7000000)個數,每次從左到右選取連續k個數,第一行選取每個區間中的最小值輸出,第二行選取最大值並輸出。

輸入第一行有兩個整數n,k,第二行為n個整數,相鄰兩個整數之間有乙個空格。

輸出有兩行,第一行為n-k+1個整數,表示從左到右每個區間的最小值,第二行為n-k+1個整數,表示從左到右每個區間的最大值。

【題解】 這個是典型的固定k區間的單調佇列。套用的本質思想是,如求最小值: 考慮這樣的乙個問題,在某個區間當中如果存在某兩個元素a,b,滿足a的下標小於b的下標,a的值大於b的值,那麼a這個數就可以刪掉,不再考慮。求最大值反之。 具體的操作是:從加入第k個數開始,每插入做一次佇列單調性更新: 刪隊尾【單調性】,入隊,刪隊首【下標範圍k以內】,輸出隊首【即最值】。

單調棧,單調佇列

大多數借鑑了 單調佇列是什麼呢?可以直接從問題開始來展開。poj 2823 給定乙個數列,從左至右輸出每個長度為m的數列段內的最小數和最大數。數列長度 n 106,m n 我們知道,解法 在暴力列舉的過程中,有乙個地方是重複比較了,就是在找當前的f i 的時候,i的前面其它m 1個數在算f i 1 ...

單調棧 單調佇列

單調棧 單調佇列是在棧和佇列的基礎上加上單調結構的資料結構。如果乙個元素入棧或入隊,他會檢查之前的元素,如果之前的元素不可能是答案的解,那麼就彈出元素,使得當前元素入棧或入隊。leetcode 239 滑動視窗最大值 此題是單調佇列,每次遇到乙個元素,一直從隊尾彈出,直到隊尾元素大於該元素為止。還需...

單調棧 單調佇列

啊學完了來寫個總結吧 顧名思義,單調,就是指色彩單一某乙個容器裡面的元素都是遞增或遞減的,而單調棧和單調佇列就是這個容器。單調棧 單調棧模板 其他的我就不說了,講下為什麼單調棧是從後往前掃瞄 當我們在判斷乙個數後面第乙個比它大的數時,前提是後面的數已經被處理了,所以我們要從後往前掃瞄。我做了兩種做法...