(連續的矩形)HDU 1506

2021-09-25 15:48:18 字數 545 閱讀 7174

題意:7 2 1 4 5 1 3 3  直接講資料 :給出7個矩形的高,底長都為1,求最大的連通的矩形塊的面積

思路:如果暴力的話肯定超時,有乙個特別巧妙的預處理,如果我們知道每乙個矩形的左右兩邊能延伸到哪就好了,這相當於乙個並查集:如果我找到了 i ,並且小於等於第 i-1 的高度,那 i-1 的左邊界就賦給 i ,向遞迴一樣找下去,直到最左邊或者 i 的高度小於左邊界的左邊。右邊界也是這樣。

注意:特別注意一下**中陣列的初始化還有最後邊界相減加一.

#includelong long f[100010],l[100010],r[100010],n;

int main()

for(int i=n;i>=1;i--)

long long sum=0,ans=0;

for(int i=1;i<=n;i++)

printf("%lld\n",ans);

}return 0;

}

hdu 1506 動態規劃

最近在做dp題,做了幾道揹包題,看到這題一開始沒有什麼思路,因為暴力的方法一定會超時。看完大牛的 就理解了。先從左到右掃一遍,往左延伸,l陣列記錄長度 再從右往左,往右延伸,r陣列記錄長度。總長度就是l i r i 1 include include include includeusing nam...

hdu 1506 並查集的思想

就是利用rig和lef陣列記錄左邊連續的比自身高的最遠位置,然後統計,每次只要找到乙個中斷點則查詢結束,避免了重複運算,最壞複雜度是n 2但平均複雜度,但對於一般的資料還是有很優秀的複雜度的 include include include include define max 100007 usin...

HDU 1542 矩形的面積並求解

1.題目鏈結。其實是乙個比較經典的問題,自己對著 手動的畫一下就明白了。主要是弄清楚線段樹維護的到底是個什麼東西,在掃瞄線向上掃瞄的過程中,線段樹維護了當前x軸上有貢獻的線段長度。具體的思路是首先離散化每個點,然後在這些點上打標記,記錄每個點的貢獻,算出當前線段的長度即可。include inclu...