1.运行结果
2.思路解析
好喜欢早年csp的出题风格QAQ,直接二重循环暴力模拟,dp[i]记录以i为左端点起始的最大矩形面积,tmp记录连续矩形的最小高度(由最低高度决定整体矩形的高度),最后进行遍历得出答案。
3.满分代码
#include<iostream>
using namespace std;
const int N=1e3+1;
int n;
long long h[N];
long long dp[N];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>h[i];
}
long long tmp;
for(int i=1;i<=n;i++)
{
dp[i]=h[i],tmp=h[i];
for(int j=i+1;j<=n;j++)
{
tmp=min(tmp,h[j]);
dp[i]=max(dp[i],(j-i+1)*tmp);
}
}
long long ans=0;
for(int i=1;i<=n;i++)
{
ans=max(ans,dp[i]);
}
cout<<ans<<endl;
return 0;
}