HDU1506 / POJ2339 Largest Rectangle in a Histogram 單調遞減棧
1.什麼是單調棧
- 具有單調性和棧的性質
- 單調遞減棧就是從棧底到棧頂是單調遞減的
- 單調遞增棧就是從棧底到棧頂是單調遞增的
2.單調棧解決的問題
- 以自己為最小值,找到最長的區間;單調遞增棧
- 以自己為最大值,找到最長的區間;單調遞減棧
- 給定一個區間找到這個區間的最大值或最小值
3.單調遞減棧的性質
對於第一個出棧的元素,它的右寬一定為0
對於第二個出棧的元素,它的右寬為第一個出棧元素的總寬
對於第三個出棧的元素,它的右寬為第二個出棧元素的總寬
。。。。。。。。
直到棧頂元素小於自己,才可以入棧;
入棧元素的左寬為上次出棧元素的總寬+1(自身);若無出棧元素,則左寬為1(自身)
最後將棧中所有元素出棧,考慮所有情況
(左寬就是比自己小的元素個數,右寬就是比自己小的
相關推薦
HDU1506 / POJ2339 Largest Rectangle in a Histogram 單調遞減棧
1.什麼是單調棧 具有單調性和棧的性質 單調遞減棧就是從棧底到棧頂是單調遞減的 單調遞增棧就是從棧底到棧頂是單調遞增的 2.單調棧解決的問題 以自己為最小值,找到最長的區間;單調遞增棧 以自己為最大值,找到最長的區間;單調遞減棧 給定一個區間找到這個區間的最大值或
POJ-2559 Largest Rectangle in a Histogram(單調棧)
comm pict mon include max specified out names align Largest Rectangle in a Histogram Time Limit: 1000MS Memory Limit: 65536K Tota
POJ2559 Largest Rectangle in a Histogram 單調隊列
sta eight 所有 for 我們 return rec += std 題目大意 有一個直方圖,其所有矩形的底均是1(以後簡稱小矩形)。給出這些矩形的高度,求這些矩形的並集中存在的面積最大的矩形(簡稱大矩形)的面積。 題解 大矩形的高必然一邊等於一個小矩形的高,
POJ 2559 - Largest Rectangle in a Histogram - [單調棧]
style long push += cst tac ++ tar 開始 題目鏈接:http://poj.org/problem?id=2559 題意: 給出 $n(1 \le n \le 10^5)$ 個寬為 $1$,高為 $h_i(0 \le h_i \le 10^
HDU-1506 Largest Rectangle in a Histogram(單調棧,DP)
Largest Rectangle in a Histogram Sample Input 7 2 1 4 5 1 3 3 4 1000 1000 1000 1000 0 Sample Output 8 4000 題意: 求直方圖中最大的矩形面積 思路:
POJ2559 Largest Rectangle in a Histogram(單調棧)
題意: 給出一組矩形的高,求最多能拼成矩形的最大面積,看圖就很清楚了。 要點: 還是單調棧,現在有點感覺了,單調棧大概就是能求出當前值左右的比它大或小的數的範圍。這題用高度作為單調棧,分別往左右找比當
HDU - 1506 Largest Rectangle in a Histogram (單調棧/笛卡爾樹)
return col 一道 scan 卡爾 左右 build new \n 題意:求一個直方圖中最大矩形的面積。 很經典的一道問題了吧,可以用單調棧分別求出每個柱子左右兩邊第一個比它低的柱子(也就相當於求出了和它相連的最後一個比它高的柱子),確定每個柱子的左右邊界,每個柱
【單調棧】hdu1506 Largest Rectangle in a Histogram ----簡單瞭解單調棧
這個題是可以用動態規劃,或者是單調棧、其實實質是差不多的; 1. 什麼是單調棧 單調棧就是保持了單調性和棧的性質; 單調遞增的棧就是從棧尾到棧頂是單調遞增的; 2. 單調棧能夠解決的問題 1) 以
POJ 2559 Largest Rectangle in a Histogram(單調棧)
common pst locale str flow bold text function target 【題目鏈接】:click here~~ 【題目大意】: A histogram is a polygon composed of a sequence of
題解報告:poj 2559 Largest Rectangle in a Histogram(單調棧)
++i char test case c代碼 ams pac 分享圖片 cas ram Description A histogram is a polygon composed of a sequence of rectangles aligned at a common
E - Largest Rectangle in a Histogram POJ - 2559 -單調棧第二彈
E - Largest Rectangle in a Histogram POJ - 2559 維護一個非遞增單調棧,對於每個矩形,我們求出它向左向右分別能延伸的長度,然後乘以它的高度。 這就是以當前矩形為最低高度可以得到的最大
2559 Largest Rectangle in a Histogram【單調棧】
Time limit 1000 ms Memory limit 65536 kB A histogram is a polygon composed of a sequence of rectangles aligned at a common base lin
【poj 2559 Largest Rectangle in a Histogram】【單調棧】
【連結】 【題意】 在一條水平線上有若干緊挨的矩形,求包含於這些矩形的並集內部的最大的矩形的面積(矩形個數<=1e5) 【分析】我們先考慮,若矩形的高度從左往右單調遞增,那麼答案顯而易見嘗試以每個矩形的高度為最終矩形的高度,並把寬度延伸到右邊界,得到一個矩形,
POJ 2559-Largest Rectangle in a Histogram 解題報告 【笛卡爾樹與單調棧】
POJ 2559-Largest Rectangle in a Histogram 解題報告 【笛卡爾樹與單調棧】 Description A histogram is a polygon composed of a sequence of rectang
HUD 1506 Largest Rectangle in a Histogram(單調棧的應用)(題目詳解)
A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have different height
Largest Rectangle in a Histogram(單調棧)
A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but
poj2559 Largest Rectangle in a Histogram(單調棧)
題意 有n個矩形,它們在一條水平線上且寬度都為1,長度分別為a[i]。求其中的最大子矩陣。 思考過程 我們從左往右列舉每一個矩形,第i個矩形依次嘗試寬度為1~n-i+1,記錄最低高度和最大面積
poj 2559 Largest Rectangle in a Histogram 求面積最大的矩形(單調棧)
題目大意 給出一個數N代表有多少個矩形,然後下面有N個數代表每個矩形的高度,寬度均為1。最後求這N個矩形組成的最大面積! 解題思路 很容易想到的就是使用單調棧。維護一個從棧頂到棧低減小的棧! 每次遇到棧頂的元素大於要壓入的元素就要,出棧然後和當前的最
POJ 2559 &&HDU 1506 Largest Rectangle in a Histogram && 51nod 1102 面積最大的矩形 單調棧的應用
題目大意:POJ 2559 &&HDU 1506 && 51NOD 1102這三個題其實都是一個題,有N個矩形,寬度都為1,給出N個矩形的高度,求由這N個矩形組成
HDU1506 Largest Rectangle in a Histogram(算競進階習題)
面積 習題 inf 所有 getchar 需要 def 因此 最大 單調棧裸體 如果矩形高度從左到右是依次遞增,那我們枚舉每個矩形高度,寬度拉到最優,計算最大面積即可 當有某個矩形比前一個矩形要矮的時候,這塊面積的高度就不能大於他本身,所以之前的所有高於他的矩形多出來的部分