單調棧的運用

2021-08-09 20:08:44 字數 616 閱讀 5360

單調棧本質上只是單調遞增或遞減的棧,有點類似於單調佇列,但不同之處在於插入乙個元素時,會彈出棧中

所有不符合單調性的元素(來個例子吧!)

當乙個單增的棧stack;向其中壓入元素6時,stack;向其中壓入元素2時,stack彈出2,3,4,且stack;向其中壓入0時,stack彈出1,2,3,4,stack;

所以結論利用單調棧,可以找到從左或右第乙個比它小或大的元素的位置

題目

n個矩形,排成一排. 現在希望用盡量少的矩形海報cover住它們.

第一行給出數字n,代表有n個矩形.n在[1,250000] 下面n行,每行給出矩形的長與寬.其值在[1,1000000000]2

1/2 postering

最少數量的海報數.

#include#include

using namespace std;

int t,x,n,s[250001],top,ans;

int main()

s[++top]=x;

} printf("%d",n-ans);

return 0;

}

單調棧的運用

題目大意 有一群列隊,面朝右站立的牛,輸入每頭牛的身高,如果視線前方有一頭高於自己的牛,則看不到它之後的牛 求出所有牛能看到頭頂的個數。n方演算法超時,故考慮優化,首先能想到的是,在計算左邊的牛能看到多少牛時,可以利用右邊的結果。棧優化的思路即是,從右向左遍歷牛的身高,同時對棧進行操作 棧中存放牛的...

單調棧的運用

單調棧可以用來是實現在 離線的情況下,o n 的處理出陣列中所有點比某個點小或大最近的距離是多少 具體做法是用棧來維護一邊的點的下表,由於假如ihj 那麼h i 便永無出頭之日 可以把他刪了,而在棧裡能找到的直到第一次出現的小與hi的h j 就一定是最近的,每個點出棧一次,進棧一次,所以時間複雜度是...

單調棧 模板 單調棧模板

biu 單調棧主要用於求取左邊第乙個比它大,或者比它小的數。就比如站隊隨便排成一列,可以求到每個人後面第乙個比他高的人。同理可以推廣至右邊,比它矮均可。這就是單調遞增棧 遞減棧,從前至 棧,從後向前入棧的區別了。單調棧比較抽象,非常具有智慧型的想法,可應用的場景相當少,根據幾個經典題目體會它的用法會...