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

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

                                              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 ,∑ 0<=j<=i-1wj <= x <= ∑ 0<=j<=iwj} 
Again, define set S = {A| A = WH for some W , H ∈ R + and there exists x0, y0 in N such that the set T = { < x , y > | x, y ∈ R and x0 <= x <= x0 +W and y0 <= y <= y0 + H} is contained in set B}. 
Your mission now. What is Max(S)? 
Wow, it looks like a terrible problem. Problems that appear to be terrible are sometimes actually easy. 
But for this one, believe me, it's difficult.

Input

The input consists of several test cases. For each case, n is given in a single line, and then followed by n lines, each containing wi and hi separated by a single space. The last line of the input is an single integer -1, indicating the end of input. You may assume that 1 <= n <= 50000 and w 1h 1+w 2h 2+...+w nh n < 10 9.

Output

Simply output Max(S) in a single line for each case.

Sample Input

3
1 2
3 4
1 2
3
3 4
1 2
3 4
-1

Sample Output

12
14

题意就像诗一样——两只黄鹂鸣翠柳,一行白鹭上青天,不知所云呐!!!

百度是个好东西,经过百度发现题意就是给你几个矩形块求这些矩形块能拼成的最大面积;

样例的图,自己好好想一下就能体会。

解题思路:假如题目给出的矩形正好是按高度单调递增的,很明显我们可以从高到低枚举所有的矩形块就行了;

比如最高的那一块构成的面积,就是自己的面积;他左边的构成的面积就是他两的宽* 左边那一个的面积;一直这样枚举下去就行了;

对于一般的乱序的矩阵块,就可以维护一个单调增的栈;右边的比左边的高,入栈;否则,把所有比他高的矩形块都出栈;在这个出栈的过程中,记录下这些矩形块能构成的最大面积(这些一定是单调增的),然后合并新的矩形块,最后得到一个单调增的;然后按上述枚举即可,最终答案只需要每次都比较取max;

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<stack>
#define bug puts("hi!")
using namespace std;
const int maxn=2e6+7;
const int INF=0x3f3f3f3f;
int n;
int k;
int sum[maxn];
struct node
{
    int w,h;
}a[maxn];
int main()
{
    while(scanf("%d",&n)!=EOF,n!=-1)
    {
        for(int i=0;i<n;++i)
            scanf("%d%d",&a[i].w,&a[i].h);
        stack<node> s;
        int maxarea=0;
        for(int i=0;i<n;++i)
        {
            if(s.empty()) s.push(a[i]);
            else
            {
                if(a[i].h>=s.top().h) s.push(a[i]);
                else
                {
                    int totw=0;
                    while(!s.empty())
                    {
                        ///退栈操作是求比a[i]高的所有矩阵块能构成的最大面积;
                        if(a[i].h<s.top().h)
                        {
                            totw+=s.top().w;
                            int area=totw*s.top().h;
                            maxarea=max(maxarea,area);
                            cout<<maxarea<<endl;
                            s.pop();
                        }
                        else break;
                    }
                    node hh;
                    hh.h=a[i].h;
                    hh.w=a[i].w+totw;
                    s.push(hh);
                }
            }
        }
        int totw=0;
        int toth=0;
        while(!s.empty())
        {
            totw+=s.top().w;
            int area=totw*s.top().h;
            maxarea=max(maxarea,area);
            s.pop();

        }
        cout<<maxarea<<endl;
    }
    return 0;
}

 

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

相关推荐

【单调栈】【网格】【柱图面积】85. 最大矩形

给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。

闻缺陷则喜何志丹 974

柱状图中最大的矩形

柱状图中最大的矩形 难度困难783 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位 示例: 输入: [2,1,5,6,2,3]输出: ...

꒰๑˘ᴗ˘๑꒱ 201

保姆级教程:在Ubuntu 21.04上搞定USRP X410的UHD 4.1驱动与Gnuradio 3.9安装(含虚拟机网络避坑指南)

本文提供在Ubuntu 21.04上配置USRP X410的UHD 4.1驱动与Gnuradio 3.9的详细教程,涵盖虚拟机网络设置、依赖安装、源码编译及常见问题解决方案,帮助开发者高效搭建SDR开发环境。

weixin_27869497的博客 273

最大矩形面积——单调栈

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

weixin_44203022的博客 1203

【Matlab/Unity】跨平台UDP通信实战:从数据发送到实时可视化

本文详细介绍了Matlab与Unity之间通过UDP协议实现跨平台通信的实战方法,涵盖数据发送、接收和实时可视化全流程。针对科研仿真和工业设计场景,提供优化代码示例和性能对比数据,帮助开发者解决低延迟传输、线程安全等关键问题,显著提升跨平台协作效率。

weixin_29044713的博客 153

智能车实战——从ADC采集到PWM控制,让电磁车精准循迹

本文详细介绍了电磁循迹智能车的实现原理与实战技巧,涵盖从ADC信号采集、PWM控制到PID算法整定的全流程。通过STM32代码示例解析电感信号处理、差比和偏差计算及电机驱动等关键技术,帮助开发者快速掌握智能车精准循迹的核心方法,提升电磁车竞赛项目的开发效率。

weixin_29192211的博客 302

算法—求最大矩形面积

题目 给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。 输入描述: 输入包括两行,第一行包含一个整数n(1 ≤ n ≤ 10000) 第二行包括n个整数,表示h数组中的每个值,h_i(1 ≤ h_i ≤ 1,000,000) 输出描述: 输出一个整数,表示最大的矩阵面积。 示例1 输入: 6 2 1 5 6 2 3 输出:10 分析 对于每一块矩形,都找出它所在区

shengpeizhu的博客 6094

Cesium 实战 26 - 自定义纹理材质 - 箭头流动线(图片纹理)

Cesium 实战 - 自定义纹理材质 - 箭头流动线(图片纹理)。

非科班Java出身GISer的博客 1404

单调栈-最大矩形

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

qq_39786762的博客 756

Winform从入门到精通(2)——Button(史上最全)

本文介绍winform中Button控件的详细用法,包括所有属性和事件

qq_34059233的博客 1万+

【全网首发】2026华为OD双机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)

【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)

算法大师! 8804

Leetcode-最大矩形(单调栈)

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

m0_52238102的博客 632

信息传输仿真:卫星通信系统仿真_(12).卫星通信系统仿真软件介绍

卫星通信系统仿真软件是进行卫星通信系统设计和性能优化的重要工具。通过这些软件,用户可以模拟和分析各种通信场景,验证不同的通信协议和算法,优化系统参数和配置。本节介绍了 MATLAB Simulink、NS-3、OPNET 和 SystemVue 的基本功能、特点和配置方法,希望对读者在选择和使用仿真软件时提供参考。在实际应用中,建议根据项目需求和团队能力,综合考虑选择合适的仿真软件。

2401_87715305的博客 1281

算法学习|单调栈 LeetCode 84.柱状图中最大的矩形

LeetCode 84.柱状图中最大的矩形

li26324949的博客 237

二极管钳位电路、限幅电路和检波电路Multisim电路仿真

本文系统介绍了二极管钳位、限幅和检波三种基础电路的工作原理及Multisim仿真验证。钳位电路通过电容-二极管配合实现波形整体平移,将波峰或波谷固定在指定电压;限幅电路利用二极管导通特性削除信号超出设定阈值的部分;检波电路则通过半波整流和电容滤波从调幅波中提取音频信号。三种电路均通过Multisim仿真验证了理论分析结果,展示了二极管在信号处理中的关键作用。这些基础电路广泛应用于信号调理、电平保护和通信解调等领域。

XU157303764的博客 1125

android 蓝牙通讯demo

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

矩形最大面积与接雨水——单调栈

给定一组矩形,要求得最大的子矩形大小,这是一道典型的单调栈问题。我们使用单调栈,首先插入一个-1,方便代码的编写。然后将矩形下标一个一个入栈,如果当前元素大于栈顶元素,就可以加入,如果小于栈顶元素,就要开始计算面积了。基本就是用到了单调栈的特性,当一个元素出栈时,以这个元素作为高,只有处在他后面的元素可以扩展,所以宽度就是 当前要入栈元素下标-(当前元素出栈后下一个元素的下标+1),因为当前元素出栈后,下一个元素一定是<= 当前出栈元素,无法满足出栈元素的高度。

volcan的博客 569

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

栈操作之单调栈III

之后遍历元素1,此时栈顶元素2大于当前遍历元素1,需要将栈中大于1的所有元素对应的下标出栈,进入else,进入while循环,将栈顶下标1出栈,mid = 1,对应的值为2,i为2,对应的值为1,stack.peek()为0,对应的值为0,也就是左侧柱子高度为0,中间高度为2,右侧柱子高度为1,计算三根柱子围成的面积。此时stack为[0],对应的值为[0],由于0小于1,元素0不需要出栈,最后将元素1对应的下标压入栈中,stack为[2, 0],对应的值为[1, 0]。每个柱子彼此相邻,且宽度为 1。

qq_43552690的博客 1428

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

22 | 栈与单调栈:最大矩形面积

上节课我们讲了单调队列这种具有单调性的结构,并且说明了单调队列适合:维护中的区间最大值,并且我还提到单调队列只是一个铺垫,搞清楚了单调队列的内容,才能更好地学习新的数据结构。今天将带你学习一种队列和单调队列的兄弟数据结构,它的性质也很有趣,就是:栈与单调栈。学习这个数据结构的时候呢,我还是要再次强调一下那句话:数据结构,就是定义一种性质,并且维护这种性质。

qq_37756660的博客 1343

单调栈:柱状图中最大的矩形(力扣84)

首先对于任意一根柱子i,如果它的两侧柱子都比它高则向两侧延伸形成的矩形面积绝对是变大的。所以我们只需找到左侧第一个比i小的柱子和右侧第一个比i小的柱子并记录它们的下标,那么以i柱子延伸的最大矩形面积为:(right-left-1)*heights[i]那么如何找到能作为答案的柱子i呢,很容易想到遍历。

sdnkd的博客 889

单调栈应用归纳

首先引用N大和R大的话。 单调栈:栈中元素单调排列,如果有元素想入栈但不符合单调性,就弹出栈的元素,直到该元素满足栈的单调性再入栈。 用途:求出某元素左边或右边第一个比其大或者小的元素,且时间复杂度O(n)。 单调栈的维护是 O(n) 级的时间复杂度,因为所有元素只会进入栈一次,并且出栈后再也不会进栈了。 例如在: 如果把直方图高度记为数组。面积就等于(左右第一个比自己小的元素到自己的下标差)(自...

heatSUP的博客 494

每日一题——面积最大的矩形(单调栈)

what is 单调栈?

Cooler_z的博客 791

单调栈——最大矩形面积

#include<iostream> #include<string.h> using namespace std; int a[100010]; int s[100010]; int l[100010]; int main() { int n; while(scanf("%d",&n)!=EOF&&n!=0) { long l...

weixin_43517157的博客 2231

【C++】单调栈求最大矩形面积

选做题(单调栈的应用): 给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为1。求在该柱状图中,能够勾勒出来的矩形的最大面积。 图 1柱状图示例 图1是柱状图的示例,给定的高度为,所能勾勒出来的矩形如图2所示,这些矩形最大面积为10(对应从左数第3个矩形)。 图 2所能勾勒出来的矩形 样例输入: 21...

Mitchell_Donovan的博客 1481

【暖*墟】 #单调栈# 最大矩形面积 poj 2559

栈的特征与运用 push(): 向栈内压入一个成员; pop(): 从栈顶弹出一个成员; empty(): 如果栈为空返回true,否则返回false; top(): 返回栈顶,但不删除成员; size(): 返回栈内元素的个数; #include&lt;iostream&gt; #include&lt;stack&gt; using namespace std; int main(...

flora715的博客 316

单调栈(力扣):直方图最大矩形面积(题解)

给定非负整数数组 heights,数组中的数字用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的矩形为图中红色区域,面积为 10 示例 2: 输入: heights = [2,4] 输出: 4 提示: 1 <= heights.length <=105 0 <= heights[i] <= 104 代码 ..

weixin_60789461的博客 654

AcWing每日一题 3516.最大面积(单调栈,递推)

最大面积 原题链接 给定一个 N×M 的 01 矩阵,矩阵下标从 0 开始。 有 Q 个询问,第 i 个询问为:将矩阵中 (xi,yi) 的元素改成 0 之后,只包含 1 的子矩阵的最大面积是多少。 注意: 每次询问均是独立的。 询问方格内元素可能本来就是 0。 子矩阵的面积是指矩阵的大小。 数据范围 1≤N,M≤2000,1≤Q≤105, 0≤xi<n,0≤yi<m 输入格式 第一行包含两个整数 N,M。 接下来 N 行,每行包含 M 个 01 字符。 再一行包含整数 Q。 接下来 Q 行

遗落之辉的博客 741
上一篇: Bad Hair Day ——牛说我瞅你咋地——单调栈POJ3250
下一篇: 母函数——秤砣问题——The Balance
鸭脖yb
博客等级 码龄9年 15粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值