HDU 1506 Largest Rectangle in a Histogram 【動態規劃】

【題目地址】

  http://acm.hdu.edu.cn/showproblem.php?pid=1506

 

【題目大意】

  給出n(n<=100000)個木板的高度,寬度均爲1,將n個木板豎成一排,在上面截取長方形,求最大面積。

 

【解題思路】

 

  對於每一塊木板,Area=height[i]*(j-k+1)  設其中任一塊x,  j<=x<=k,  height[x]>=height[i]; 找j,k成爲關鍵。

  一般方法肯定超時,

  

 

利用動態規劃,如果它左邊高度大於等於它本身,那麼它左邊的左邊界一定滿足這個性質,再從這個邊界的左邊迭代下去

 

 

PS: 1. 題目中height可能爲0,初始化height數組爲-1,防止死循環。

      2. 結果可能超出int,height初始爲__int64 或運算前強轉化爲__int64。運算過程中int會溢出。

 

【代碼】

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章