POJ - 2559 Largest Rectangle in a Histogram(笛卡尔树,单调栈实现)
生活随笔
收集整理的這篇文章主要介紹了
POJ - 2559 Largest Rectangle in a Histogram(笛卡尔树,单调栈实现)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目鏈接:點擊查看
題目大意:給出一排高度不同,寬度都為 1 的矩形,問拼起來后最大的矩形面積是多少
題目分析:普通做法是用單調(diào)棧直接維護,我一直覺得單調(diào)棧處理這種矩形問題都比較抽象,也可能是我太菜了,這個題目恰好發(fā)現(xiàn)可以用笛卡爾樹實現(xiàn),拿來練練手,根據(jù)笛卡爾樹的性質(zhì),對于每個矩形,以出現(xiàn)的下標為 key ,高度為 val ,維護一個小頂堆的笛卡爾樹,那么對于樹上每個節(jié)點的 val 乘以子樹的大小就是當(dāng)前節(jié)點可以做出的貢獻,維護一下最大值就是答案了
為了防止特殊情況的出現(xiàn),可以預(yù)處理在單調(diào)棧中加入一個負無窮的哨兵節(jié)點
代碼:
?
?
總結(jié)
以上是生活随笔為你收集整理的POJ - 2559 Largest Rectangle in a Histogram(笛卡尔树,单调栈实现)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU多校10 - 6886 Tic-T
- 下一篇: 牛客 - sequence(笛卡尔树+线