Largest Rectangle in a Histogram - ( 单调栈 - 求面积最大的矩形 )

C++解题报告:最大矩形面积(Largest Rectangle in Histogram)———单调栈 目录 目录 题目描述 初步探究 定义 正文 代码 总结   前言 此篇博客是我在优快云发表的第一篇博客,现在看来文笔比现在差了许多。果然写博客确实提高了我的能力。单调栈是一个非常重要的数据结构,在我们的DP学到后期时,许多题目都需要用他来优化,他常常可以将的算法优化为(甚至更少)。但这里我要讲的不是单调队列优化DP,而是对另一种算法的优化。(如果你想看看单调队列优化DP,你可... 阅读详情
题目链接:点击进入
题目

在这里插入图片描述
在这里插入图片描述

题意

n 个矩形,连在一起,按顺序给出每个矩形的高度 h [ i ] ,宽度都为 1 ,问能形成的最大矩形面积为多少。

思路

单调栈维护一个递减的序列,存储的是代表元素的位置,栈空或者元素大于等于栈顶元素则入栈,否则,栈顶出栈,直至栈空或者遇到栈顶元素小于等于枚举的元素,出栈过程中,更新以出栈栈顶元素为最低高度的,且以栈顶元素位置为左边界、以枚举元素为右边界所形成的最大矩形面积。出栈结束后,将最后一次出栈的栈顶位置入栈,同时更新此位置元素为枚举元素( 表示以枚举元素为最低元素时,左边界最远可到这个位置 )。

代码
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define best 131 
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
//#define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=1e8+10;
const int mod=998244353;
const double eps=1e-9;
const int N=5e3+10;

//inline int read()
//{
//    int k = 0, f = 1 ;
//    char c = getchar() ;
//    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
//    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
//    return k * f ;
//}

ll t,n,m,ans,top,a[maxn];
stack<int>st;

int main()
{
	while(cin>>n)
	{
		if(n==0) break;
		for(int i=1;i<=n;i++)
			cin>>a[i];
		ll ans=0;a[n+1]=-1;
		for(int i=1;i<=n+1;i++)
		{
			if(st.empty()||a[i]>=a[st.top()])
				st.push(i);
			else
			{
				while(st.size()&&a[i]<a[st.top()])
				{
					top=st.top();
					st.pop();
					ll tmp=(i-top)*a[top];
					ans=max(ans,tmp);
				}
				st.push(top);
				a[top]=a[i];
			}
		}
		cout<<ans<<endl;
	}
    return 0;
}
GitHub 国内加速完全指南(最新):镜像、代理与优化技巧 在国内使用 GitHub 时,经常遇到 clone 慢、打开仓库卡、GitHub Actions 不稳定 等问题。下面是整理好的 GitHub 国内镜像和加速方法大全,高效使用 GitHub。 阅读详情

相关推荐

ANSYS APDL 异类单元连接实战:MPC方法在壳-实体装配中的应用

本文详细介绍了在ANSYS APDL中使用MPC方法实现壳单元与实体单元高效连接的技术要点。通过分析工程仿真中的常见需求,阐述了MPC方法在解决异类单元连接问题上的优势,包括网格独立性、自由度耦合和载荷传递等特性,并提供了具体的APDL命令流操作示例和实用经验技巧。

weixin_33391446的博客 178

poj 2559 Largest Rectangle in a Histogram 求面积最大的矩形(单调栈)

Largest Rectangle in a Histogram题目大意给出一个数N代表有多少个矩形,然后下面有N个数代表每个矩形的高度,宽度均为1。最后求这N个矩形组成的最大面积!解题思路很容易想到的就是使用单调栈。维护一个从栈顶到栈低减小的栈! 每次遇到栈顶的元素大于要压入的元素就要,出栈然后和当前的最大面积取最大值,这样一直下去,最后栈中就剩下一个从栈顶到栈低减小的栈。最后变为的栈就像下面这

woshinannan的专栏 3240

在ArcGIS Pro软件中进行滑坡的敏感性和易发性分析

滑坡的敏感性和易发性分析需要综合地形、水文、地质及环境等多维数据,本文罗列了基于ArcGIS Pro软件进行的一系列可执行分析。

weixin_49609713的博客 1731

poj2559 Largest Rectangle in a Histogram (直方图最大矩形面积 单调栈)

问题描述: 直方图是由在公共基线处对齐的一系列矩形组成的多边形。 矩形具有相等的宽度,但可以具有不同的高度。 例如,图例左侧显示了由高度为2,1,4,5,1,3,3的矩形组成的直方图,矩形的宽度都为1: 通常,直方图用于表示离散分布,例如,文本中字符的频率。 现在,请你计算在公共基线处对齐的直方图中最大矩形的面积。 图例右图显示了所描绘直方图的最大对齐矩形。 输入格式 输入包含几个测试用例。 每...

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 445

保姆级教程:在Ubuntu 22.04上,用Chroot和xorriso定制你的专属服务器镜像(附离线包集成)

本文提供了一份详细的Ubuntu 22.04离线镜像定制教程,通过Chroot环境和xorriso工具,帮助用户打造专属服务器镜像。教程涵盖环境准备、镜像解构、系统定制、镜像重组与验证等全流程,特别适合需要在隔离网络环境中批量部署服务器的场景。

weixin_28704565的博客 442

CoaXPress FMC子卡:高速图像采集与FPGA原型开发实战指南

在机器视觉和工业检测领域,高速、可靠的数据传输是核心需求。CoaXPress(CXP)协议作为一种基于同轴电缆的高速接口标准,通过其高带宽、长距离传输和低延迟的特性,有效解决了传统接口在确定性实时传输方面的短板。其技术价值在于为海量图像数据提供了稳定、高效的物理层和数据链路层解决方案,广泛应用于半导体检测、医疗成像等对吞吐量有极致要求的场景。要实现CXP系统的快速原型验证,集成了高速SerDes接口和时钟管理的FMC子卡与FPGA开发板的组合成为关键。这种平台将复杂的硬件设计封装,让开发者能聚焦于图像处理算

weixin_31815843的博客 278

HDU 1506 Largest Rectangle in a Histogram(最大矩形面积、单调栈)

题目链接: HDU 1506 Largest Rectangle in a Histogram 题意: 给出一排紧密并列的矩形的高,宽均为1,求从中可以划分出的最大的矩形面积? 数据范围:n≤105,hi≤109n\leq 10^5,h_i\leq 10^{9} 分析: 单调栈求出每个矩形可以向左向右延伸的最大长度。 单调栈、单调队列学习博客 时间复杂度:O(n)O(n)#inclu

ramay7 1478

从安装到跑通第一个例程:Halcon 20.11深度学习版环境搭建全记录

本文详细记录了Halcon 20.11深度学习版环境搭建的全过程,从安装配置到运行第一个例程,特别针对CUDA版本冲突、算子验证和样本数据预处理等常见问题提供解决方案。通过实战案例展示PCB缺陷分类流程,帮助工程师快速掌握工业级图像处理技术,提升深度学习模型在工业质检中的应用效率。

weixin_28739079的博客 220

POJ 2559 &&HDU 1506 Largest Rectangle in a Histogram && 51nod 1102 面积最大的矩形 单调栈的应用

欢迎关注我的个人博客:www.zuzhiang.cn 传送门:POJ 2559 题目大意:POJ 2559 &&HDU 1506 && 51NOD 1102这三个题其实都是一个题,有N个矩形,宽度都为1,给出N个矩形的高度,求由这N个矩形组成的图形包含的最大的矩形面积。 Sample Input 7 2 1 4 5 1 3 3 ...

zuzhiang的博客 2549

HIDL概述

HIDL背景 Treble 是 Google Android 团队的一项重大项目,意在 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Android 7.x 及更早版本中没有正式的供应商接口,因此设备制造商必须更新大量 Android 代码才能将设备更新到新版 Android 系统: 图1 Treble ...

u013357557的专栏 2万+

基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(一)

基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(一)

宁波阿成的博客 658

POJ 2559 Largest Rectangle in a Histogram(单调栈维护最大矩形面积)

Largest Rectangle in a Histogram Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 19645   Accepted: 6348 Description A histogram is a polygon composed of a sequ

I good vegetable a! 740

开关电源和线性电源Multisim电路仿真实验汇总——硬件工程师笔记

本文系统介绍了稳压电源的基础知识与应用实验。首先阐述了稳压电源的定义与类型,包括线性稳压电源(如LM7805/7905)和开关稳压电源(降压/升压/升降压式)的工作原理、参数特点及优劣势。随后详细讲解了各类稳压电源的实验设计,如线性稳压电源的电路实现、开关稳压电源的PWM控制方法等。最后汇总了硬件工程师相关的笔试面试资源,涵盖器件知识、电路仿真、企业真题等内容。全文结合理论分析与Multisim仿真,为电子工程学习者提供了稳压电源的实用技术参考。

XU157303764的博客 1640

[POJ 2559 Largest Rectangle in a Histogram] 单调栈

[POJ 2559 Largest Rectangle in a Histogram] 单调栈题目链接:[POJ 2559 Largest Rectangle in a Histogram] 题意描述:给定一个柱形图,总长度为N,每个区间长度为h1,h2,…,hnh_1,h_2,\ldots ,h_n,求在柱形图中的最大面积的矩形。 解题思路: 点击查看单调栈的一些性质:《 [poj 2

Fighting! 600

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

HDU 1506 Largest Rectangle in a Histogram【单调栈/单调队列】

HDU 1506 Largest Rectangle in a Histogram 题意: 给出一个长度为n的序列,这些序列代表每个宽度为1的矩形的高,矩形是按顺序连在一起的,问最大相连面积(高为相连矩形的最小)。 思路: 对于每个最大连续的矩阵区间,如果它的边界有比这个区间最矮的矩形高的矩形,那么高的矩形肯定会被合并进去的。即找到每个节点的从左(从右)第一个比它小的节点, 这样就是当前节点能构成...

nefu_ljw的博客 322

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

单调栈:HISTOGRA - Largest Rectangle in a Histogram

求最大矩阵面积。利用单调栈(严格递增或递减)找到比矩阵高度低的长度。

2403_86817821的博客 52

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

POJ2559 Largest Rectangle in a Histogram [单调栈]

题意: 给定多个矩形,求最大的合并面积。 思路: 和POJ2082【前一篇文章】一样的题目。 还是单调栈的应用,关键还是理解单调时候可以用O(N)的算法处理,所以处理成单调栈。本质思路参看前一篇文章。 不过注意要用__int64或者long long。 #include #include #include #include #define max(a,b) (a>b?a:b)

Aszxqw 858

Leetcode. Largest Rectangle in Histogram

1. 题解 题目 链接🔗:84. Largest Rectangle in Histogram 这道题和42. Trapping Rain Water有些相像,但是42题求的是能围住的最大面积,而本题求的是连成的矩阵的最大面积,因而在计算面积的方法上有些许不同。85. Maximal Rectangle就是在本题基础上的变式,通过一系列变化可以使用本题方法。 分析 简单分析可以知道最大矩形面积有两种情况: 当前矩形的高度heights[i] * 1 当前矩形的高度heights[i] * (向右第一个比

三明治文鱼的博客 7797

【单调栈】Largest Rectangle in a Histogram

传送门 Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have different heights. For example, the figure on the left shows the histogram that consists of rectangle

蒟蒻的OI路 1369

LeetCode 84. Largest Rectangle in Histogram C++ 单调栈

Problem 题目链接 Solution 题意为:给你一个数组,这个数组代表了一个柱状图(数组中的每个元素代表每个柱子的高度),让你求出这个柱状图中能取到的面积最大的矩形面积。 单调栈:栈中元素保持单调递增或递减的单调性。其中栈的单调性是指元素出栈后的序列的单调性,因此栈顶元素大于栈底元素的单调栈是递减栈,反之是递增栈。 这题可以用递减栈来做 顺序遍历原序列: 如果栈为空或栈顶元素对应的数组元素小于等于目前遍历到的元素,则把当前元素的下标入栈 否则,最大的面积就可能出现在之前的元素中(可以这么想,如果元

dong的博客 3809

Largest Rectangle in a Histogram【单调栈】【双向】

A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have different heights. For example, the figure on the left shows ...

qq_43659632的博客 332

Largest Rectangle in a Histogram HDU - 1506 解题思路 单调栈

原题目 Problem Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have different heights. For example, the figure on the left shows the histogram that consists of r

qq_45750017的博客 976

Largest Rectangle in a Histogram(单调栈)

Sample Input 7 2 1 4 5 1 3 3 4 1000 1000 1000 1000 0 Sample Output 8 4000 求题意就是让求最大的矩形面积。 思路:这里我们既然相求最大的矩形面积,所以我们就判断以单个单个矩形的高为起点,想左右拓展的最元距离。最后维护一个最大值。但是我们用暴力判断能向左右拓展多远明显时间复杂度又不够,所以我们采用单调栈的思想,比如我们先从左到右判断以没个点为高的左边界时,我们就从左到右维护一个递增的栈。每次判断下标所在的值,与栈顶所在的值得关系.

s1050712899的博客 833

Largest Rectangle in a Histogram POJ - 2559(直方图最大面积,单调栈)

直方图中最大的矩形 题目 提交记录 讨论 题解 视频讲解 直方图是由在公共基线处对齐的一系列矩形组成的多边形。 矩形具有相等的宽度,但可以具有不同的高度。 例如,图例左侧显示了由高度为2,1,4,5,1,3,3的矩形组成的直方图,矩形的宽度都为1: 2559_1.jpg 通常,直方图用于表示离散分布,例如,文本中字符的频率。 现在,请你计算在公共基线处对齐的直方图中最大矩形的面积。 图例右图显...

tomjobs的博客 572

Leetcode——Largest Rectangle in Histogram (求最大矩形面积的一类题目总结)

1Largest Rectangle in Histogram原题目链接 https://www.nowcoder.com/practice/e3f491c56b7747539b93e5704b6eca40?tpId=46&tqId=29094&tPage=4&rp=4&ru=/ta/leetcode&qru=/ta/leetcode/questio...

qq_33713592的博客 378

Largest Rectangle in Histogram

Givennnon-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram. Above is a histogram where width of eac...

weixin_33804990的博客 1090
上一篇: Largest Submatrix of All 1’s - ( 单调栈 - 求最大全1矩阵 )
下一篇: 2021牛客暑期多校训练营3 - B - Black and white( 最小生成树 )
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值