B4273 [蓝桥杯青少年组省赛 2023] 最大的矩形纸片

题目描述

一张半边参差不齐的网格纸(网格边长均为 111),有一边是完整没有破损的。现要从中剪出一片面积最大的矩形纸片。

给定网格纸中完整边的长度 NNN(1≤N≤1 000 0001 \leq N \leq 1\,000\,0001≤N≤1000000),以及网格中每一列残存部分的高度(1≤1 \leq1≤ 高度 ≤10 000\leq 10\,000≤10000),输出能够剪出的最大矩形纸片面积。

输入格式

第一行输入一个正整数 NNN(1≤N≤1 000 0001 \leq N \leq 1\,000\,0001≤N≤1000000),表示纸片完整边的长度。

第二行输入 NNN 个正整数(1≤1 \leq1≤ 正整数 ≤10 000\leq 10\,000≤10000),表示每列格子残存部分的高度,两个正整数之间用一个空格隔开。

输出格式

输出一个正整数,表示能够剪出的最大矩形纸片面积。

输入输出样例 #1

输入 #1

6
3 2 1 4 5 2

输出 #1

8

C++实现

#include<bits/stdc++.h>
using namespace std;
int h[1000001];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>h[i];
	}
	int maxn=0;
	for(int i=1;i<=n;i++){
		int m=1e9+1;
		for(int j=i;j<=n;j++){
			for(int k=i;k<=j;k++){
				m=min(m,h[k]);
			} 
			maxn=max(maxn,m*(j-i+1));
		}
	}
	cout<<maxn<<endl;
	return 0;
}

在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐