48 最大矩形面積

2021-09-25 07:04:10 字數 1560 閱讀 3310

地面上從左到右併排緊挨著擺放多個矩形,已知這此矩形的底邊寬度都為1,高度不完全相等。求在這些矩形包括的範圍內能得到的面積最大的矩形,列印出該面積。所求矩形可以橫跨多個矩形,但不能超出原有矩形所確定的範圍。

如 n = 7, 序列為2 1 4 5 1 3 3

_                       _           

_ | | _ | |

| || | _ _ |h||h| _ _

_ | || | | || | _ |h||h| | || |

| | _ | || | _ | || | | | _ |h||h| _ | || |

|||||||||||||| |||||h||h|||||||

最大面積:8

輸入有多組資料,每組資料一行:

第乙個數n,表示矩形個數

後面跟n個正整數,第i個正整數hi表示第i個矩形的高度。

最後一行,以乙個單獨的0結束。

每組輸入資料一行,乙個數表示最大矩形面積。

721

4513

341000

1000

1000

1000

0

8

4000

30 %: 1<=n<=100

60 %: 1<=n<=1,000

100%: 1<=n<=500,000,0<=hi<=1,000,000,000

#include

#define m(a,b) memset(a,b,sizeof(a))

#define inf 0x3f3f3f3f

#define mod 100003

using

namespace std;

inline

void

read

(int

&x)while

(ch>=

'0'&& ch<=

'9')

if(c==

'-')x=

-x;}

stack<

int> st;

int i,j,k,m,n;

int h[

500005

],l[

500005

],r[

500005];

intmain()

l[i]

=st.

top();

st.push

(i);

}long

long ans=0;

for(i=

1;i<=n;i++

)ans=

max(ans,

1ll*

(r[i]

-l[i]-1

)*h[i]);

printf

("%lld\n"

,ans);}

return0;

}

48 最大矩形面積

48.最大矩形面積 統計描述 提交自定義測試 題目描述 地面上從左到右併排緊挨著擺放多個矩形,已知這此矩形的底邊寬度都為1,高度不完全相等。求在這些矩形包括的範圍內能得到的面積最大的矩形,列印出該面積。所求矩形可以橫跨多個矩形,但不能超出原有矩形所確定的範圍。如 n 7,序列為2 1 4 5 1 3...

最大矩形面積

題目描述 地面上從左到右併排緊挨著擺放多個矩形,已知這此矩形的底邊寬度都為1,高度不完全相等。求在這些矩形包括的範圍內能得到的面積最大的矩形,列印出該面積。所求矩形可以橫跨多個矩形,但不能超出原有矩形所確定的範圍。如 n 7,序列為2 1 4 5 1 3 3 h h h h h h h h 最大面積...

最大矩形面積

地面上從左到右併排緊挨著擺放多個矩形,已知這此矩形的底邊寬度都為1,高度不完全相等。求在這些矩形包括的範圍內能得到的面積最大的矩形,列印出該面積。所求矩形可以橫跨多個矩形,但不能超出原有矩形所確定的範圍。如 n 7,序列為2 1 4 5 1 3 3 h h h h h h h h 最大面積 8 輸入...