POJ2082 最大矩形面积 单调栈

最大矩形面积问题——单调栈法 最大矩形面积问题——单调栈法 文章目录最大矩形面积问题——单调栈法直方图最大矩形面积分析单调栈法过程示例代码示例矩阵中最大的矩形分析代码示例 直方图最大矩形面积 题目地址 给定非负整数数组 heights ,数组中的数字用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例1 输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的矩形为图中红色区域,面积为 10 示例2 输入: heights = [ 阅读详情

【题目链接】

          点击打开链接

【题意】

          给了一些h*w的矩形,大小可不等,求可组成的最大矩形面积是多少?单调栈经典题,做法和点击打开链接 完全相同。


【AC代码】


//
//Created by just_sort 2016/1/5
//Copyright (c) 2016 just_sort.All Rights Reserved
//

//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
//#include <ext/pb_ds/hash_policy.hpp>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdio>
#include <time.h>
#include <cstdlib>
#include <cstring>
#include <sstream> //isstringstream
#include <iostream>
#include <algorithm>
using namespace std;
//using namespace __gnu_pbds;
typedef long long LL;
typedef pair<int, LL> pp;
#define REP1(i, a, b) for(int i = a; i < b; i++)
#define REP2(i, a, b) for(int i = a; i <= b; i++)
#define REP3(i, a, b) for(int i = a; i >= b; i--)
#define CLR(a, b)     memset(a, b, sizeof(a))
#define MP(x, y)      make_pair(x,y)
const int maxn = 1e6 + 10;
const int maxm = 2e5;
const int maxs = 10;
const int maxp = 1e3 + 10;
const int INF  = 1e9;
const int UNF  = -1e9;
const int mod  = 1e9 + 7;
int gcd(int x, int y) {return y == 0 ? x : gcd(y, x % y);}
//typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>order_set;
//head
struct node{
    int height, width;
}s[maxn];
int top;
int getmax(int a, int b)
{
    return a > b ? a : b;
}
int main()
{
    int n, height, width, tmp, ans, tot, top;
    while(scanf("%d", &n) != EOF && n != -1)
    {
        top = ans = 0;
        REP1(i, 0, n){
            scanf("%d%d", &width, &height);
            tmp = 0;
            while(top > 0 && s[top - 1].height >= height)
            {
                tot = s[top - 1].height * (s[top - 1].width + tmp);
                ans = getmax(ans, tot);
                tmp += s[top - 1].width;
                --top;
            }
            s[top].height = height;
            s[top].width = width + tmp;
            top++;
        }
        tmp = 0;
        while(top > 0)
        {
            tot = s[top - 1].height * (s[top - 1].width + tmp);
            ans = getmax(ans, tot);
            tmp += s[top - 1].width;
            --top;
        }
        cout << ans << endl;
    }
    return 0;
}


c++单调栈实现最大矩形面积 题意 给一个直方图,求直方图中的最大矩形的面积。例如,下面这个图片中直方图的高度从左到右分别是2, 1, 4, 5, 1, 3, 3, 他们的宽都是1,其中最大的矩形是阴影部分。 Input 输入包含多组数据。每组数据用一个整数n来表示直方图中小矩形的个数,你可以假定1 <= n <= 100000. 然后接下来n个整数h1, …, hn, 满足 0 <= hi <= 1... 阅读详情

相关推荐

MathType 7.4保姆级安装教程:从下载到Word/WPS完美加载(附常见问题解决)

本文提供MathType 7.4的详细安装教程,涵盖从下载到Word/WPS完美加载的全过程,并附常见问题解决方案。特别针对科研写作中的公式编辑需求,介绍如何避免安装陷阱、配置Office集成及高效排版技巧,帮助用户快速掌握这一公式编辑神器。

weixin_29200741的博客 4360

单调栈-最大矩形

一、引言 给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。 来源:力扣(LeetCode) LeetCode-84. 柱状图中最大的矩形 二、单调栈 1、栈中维护数组的下标,栈中下标对应的数组值升序排列。栈中初始化-1结点,起始标记。 2、O(n)遍历数组中每个值,对第i个值有两种情况 (1)prev == -1 || heights[i] >= heights[prev]:下标i入栈 ...

qq_39786762的博客 756

四类九种移位寄存器总结(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR|verilog代码|Testbench|仿真结果)

移位寄存器有哪些分类呢? 按移位方向分类:①单向移位寄存器(包括左移、右移)②双向移位寄存器 按循环方式分类:①循环移位寄存器②非循环移位寄存器 按部位的不同分类:①逻辑移位寄存器②算术移位寄存器 按输入输出方式分类:①串入串出②串入并出③并入串出④并入并出

Loudrs的博客 1万+

最大的矩形(单调栈的使用)

首先,要了解单调栈的原理和用途,才能将单调栈应用于题目之中,还不了解单调栈的可以先去学习了解一下。一般题目中需要用到寻找比某个元素更大或者更小的元素时可以用到单调栈。

2301_80230965的博客 450

【算法】基于STM32的MPU6050卡尔曼滤波算法(入门级)

1. 简介 卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。详情见:卡尔曼滤波简介 MPU6050的解算主要有三种姿态融合算法:四元数法 、一阶互补算法和卡尔曼滤波算法。我们常用的DMP库使用的是四元数法,本文采用卡尔曼滤波算法,使用RT-Thread国产操作系统,利用env工具进行串口、模拟IIC环境配置,使用10ms的线程进行卡尔曼滤波解算。 2.

weixin_44549777的博客 3万+

5G 网络的移动性管理上下文对比介绍

5G 网络的移动性管理上下文对比介绍 4G/5G MM移动性管理机制对比 5G引入了新移动性管理状态,通过mobility pattern(移动方式)实现按需的移动性管理等。 MM的相关状态分为一下几种: RM状态(用户注册管理 注册态/非注册态)和CM状态(用户连接态/空闲态)独立;RM状态标识UE是否注册到网络,CM状态标识UE和核心网的信令连接是否存在。 RAN侧引入RRC-inactive state:UE(用户端)对于CN(核心网)而言处于连接态,对RAN(接入网)而言处于Ld..

m0_59032675的博客 4823

Leetcode-最大矩形(单调栈)

首先我们发现,其实找一块块矩阵时,很多时候我们都要重复的寻找一些单元格,来确保我们可以找到最大的矩阵面积。我们定义height[i]代表当前行的第j列往上数,数字为1的矩阵高度。然后我们开始一行行遍历,在第i行时,我们要从第j列开始往前查找j-1一直到0,每次的高度取这一路的最小值,然后不断更新最大值。首先我们仍然计算出每一行的高度数组,然后遍历每一行,像上面这个文章一样,看成计算柱状图中的最大矩阵即可。只写了暴力枚举的,单调栈方法的代码和上个题差不多,偷个懒。的最大矩形,并返回其面积。

m0_52238102的博客 632

MAVLink协议详解

MAVLink是为微型飞行器MAV(Micro Air Vehicle)设计的(LGPL)开源的通讯协议。是无人飞行器和地面站(Ground Control Station ,GCS)之间,以及无人飞行器之间通讯常用的协议。APM、PIXHAWK飞控,Mission Planner、QGroundControl地面站均使用了MAVLink协议进行通讯。 MAVLink源码下载地址(现已更新至v2.0):https://github.com/mavlink/qgroundcontrol   用户手册:ht

程序猿老樊的博客 7707

POJ2559 POJ2082 POJ3494(最大矩形面积 单调栈)

POJ2559     这是最基本的,宽度都为1,只需考虑高度即可。对于每个矩形,我们从它往左开始找到第一个高度小于它的,记找到的左界为Li,同理,找到的右界为Ri,则以这个举行为基准找到的最大矩形面积为Hi*(Ri-Li+1)。寻找边界的过程可以用一个单调栈来高效地完成。 #include #include #include #include #include #include #inclu

Interstellar_的博客 941

华为OD机试 双机位C卷:微服务的集成测试 (C/C++/Py/Java/JS/Go)

华为OD机试 双机位C卷 :微服务的集成测试 ,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 微服务的集成测试 , 华为OD 微服务的集成测试

qq_45776114的博客 2066

simulink的Sine Wave 模块详解

模块是 Simulink 中的一个信号源模块,用于生成正弦波信号。该模块可以根据设定的幅值、频率、相位和偏移量,在仿真过程中产生周期性的正弦波形。模块都能提供强有力的支持。通过深入了解其参数的影响及结合 MATLAB 脚本的应用,读者可以更加有效地利用这一模块进行仿真和研究。此外,通过实际应用场景的扩展以及常见问题解答部分的帮助,能够更好地掌握。模块是一个非常实用的工具,适用于需要生成正弦波信号的各种场景。模块的参数,可以进一步增强学习体验。模块参数的影响,下面我们将详细探讨每个参数如何影响仿真结果。

xiaoheshang_123的博客 1052

POJ 2082 Terrible Sets(单调栈) 【最大矩形面积类模板】

Let N be the set of all natural numbers {0 , 1 , 2 , . . . }, and R be the set of all real numbers. wi, hi for i = 1 . . . n are some elements in N, and w0 = 0. Define set B = {< x, y > | x, y ∈ R and there exists an index i > 0 such that 0 <= y <= hi ,∑

风的记忆 318

在 SAP BTP Cloud Foundry 环境中开发 SAP HANA 的完整实战路线图

SAP HANA Cloud迁移路径解析:从本地到云原生的数据库现代化 本文梳理了SAP HANA在Cloud Foundry环境中的架构定位和实施路径,针对不同起点的项目提供迁移建议。核心内容包括: SAP HANA Cloud在Cloud Foundry中的双重角色:既作为平台服务提供数据库实例,又通过HDI容器管理MTA应用中的数据库工件。 针对四类典型项目起点的迁移策略: 绿地项目:直接采用CAP+SAP HANA Cloud组合 已有HANA service或XS advanced项目:需对照兼容

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 266

POJ 2082 Terrible Sets 51nod 1102 面积最大的矩形 《题意好难懂---<贪心+单调栈>》

Terrible Sets Time Limit: 1000MS   Memory Limit: 30000KB   64bit IO Format: %lld & %llu Submit Status Description Let N be the set of all natural numbers {0 , 1 , 2 , .

leibniz_zhang的博客 776

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

数组的辅助——单调栈

数组的优秀辅助—— 单调栈,意在维护栈内元素有序。 一般作为数组的辅助工具,可以实现从数组的任意一个元素A[i]开始,向左或向右寻找第一个大于或小于A[i]的元素。

诗鸩的博客 221

蓝牙模块HM-10手册

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

poj2082 Terrible Sets

题目来源:http://poj.org/problem?id=2082 单调栈裸题。手写栈实现版。 代码: #include &lt;cstdio&gt; #include &lt;cstdlib&gt; #include &lt;cstring&gt; #include &lt;cmath&gt; #include &lt;algorithm&gt; #include &lt;iostr...

No cost too great! 177

POJ 2082 Terrible Sets(单调栈)

题目链接: POJ 2082 Terrible Sets 题意: 【题目描述成这样也是醉了。。。】 实际上就是给出nn个并排矩形的底和高,求能划分的最大矩形面积。 数据范围:n≤5∗104n\leq 5*10^4 分析; 和前面那道题其实一样的,只要用一个sum[]sum[]数组记录下底的和就好了。#include <stdio.h> #include <string.h> #incl

ramay7 477

POJ-2082 Terrible Sets (单调栈)

今天知道有单调栈这种数据结构 用单调递增栈很容易就能求出以h[i]为最小值的区间 大致过程如下: 若h[i]<s[top].h,则不停弹出栈顶元素,直至h[i]>=s[top].h,且此h[i]的起始位置为弹出的最后一个元素的起始位置; 否则直接进栈,其起始位置为i

idealism_xxm的专栏 511

【bzoj3039】玉蟾宫

悬线法?记录up表示往上延伸的F的高度 然后变成每行求最大子矩形面积单调递增的栈,详见poj2082 (回宿舍睡觉有空补更)顺带Orz DQS学长手速五分钟打完 + 提交 + 写题解Orz#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <stack> using name

LOI_xczhw的博客 763

Poj 2082(单调栈)

Terrible Sets Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 2778   Accepted: 1413 Description Let N be the set of all natural numbers {0 , 1 , 2 , . . . },

勿忘初衷 1061

单调栈求矩形块最大面积 poj 2082 两只黄鹂鸣翠柳,一行白鹭上青天

                                              Terrible Sets  Let N be the set of all natural numbers {0 , 1 , 2 , . . . }, and R be the set of all real numbers. wi, hi for i = 1 . . . n are some elem...

路漫漫其修远兮,吾将上下而求索 1264

【POJ】2082 - Terrible Sets(单调栈)

点击打开题目 Terrible Sets Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4365   Accepted: 2261 Description Let N be the set of all natural numbers {0 ,

wyg1997 819

POJ2599+POJ2082【最大矩形面积】

题目链接:http://poj.org/problem?id=2559 题目链接: 这一类题目的解法,不知自己闲着没事就做了两个。 果然压栈的过程很痛苦。  不断的调试更改思路。 给定从左到右多个矩形,已知这此矩形的宽度都为1,长度不完全相等。这些矩形相连排成一排,求在这些矩形包括的范围内能得到的面积最大的矩形,打印出该面积。所求矩形可以横跨多个矩形,但不能超出原有矩形所确

Beyyes 1511
上一篇: POJ 2559 Largest Rectangle in a Histogram 单调栈学习
下一篇: SPOJ_MINSUB:Largest_Submatrix(二分+单调栈)
just_sort
博客等级 码龄11年 2357粉丝 1667原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值