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