7 14 單調棧 單調佇列 dp優化

2022-08-19 13:54:14 字數 874 閱讀 5945

單調棧和單調佇列的定義具體看ppt了

模板:單調佇列

head =1; tail = 0

; rep( i ,

1,n );

例題:

求滑動視窗內最大(小)值

單調棧

for( ll i=1 ;i<=n ;i++);

}

例題:

求柱狀圖內最大矩形面積

dp優化:

1.n'>n

n 個木板,m

'>m

m 個粉刷匠,每塊木板最多刷一次,第 i

'>i

i 個粉刷匠要麼不刷,要麼刷包含 木板 s

i'>si

si​的、長度不超過 l

i'>li

li​的連續一段木板,每刷一塊得到 p

i'>pi

pi​的錢,求最大能一共能獲得多少錢。

#include#include

#include

#include

#include

#define rep( i ,x ,y) for( int i=x ;i<=y ;i++ )

using

namespace

std;

struct

node

}e[150

];int dp[105][20000] ,q[20000

]; int res( int i ,int

k)int

main()

rep( j ,

1,n )}}

printf(

"%d\n

",dp[m][n] );

}return0;

}

單調棧,單調佇列

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

單調棧 單調佇列

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

單調棧 單調佇列

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