luoguSP1805,POJ2559-Largest Rectangle in a Histogram【单调栈】

正题

POJ题目链接:http://poj.org/problem?id=2559
luogu评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=SP1805


大意

有n个高度不同,宽度为1的长方形排列在一起。找到一个长方形使其面积最大
这里写图片描述


解题思路

我们先考虑单调递增的情况
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这样的话就只有以上几种情况。
然后我们考虑不是递增的情况,那么上面的就没有用了
这里写图片描述
我们就可以将其去掉
这里写图片描述
我们考虑用单调栈,如果单调上升就加入栈顶,不然就将栈弹出直到加入新元素之后是单调的,在途中统计弹出的宽度和,然后计算,之后再将宽度合并到新的元素中。


code

#include<cstdio>
#include<stack>
#include<algorithm>
using namespace std;
stack<int> a;
int n,wide,h[100010],w[100010];
long long maxs;
int main()
{while(1){scanf("%d",&n);if (!n) break;while(!a.empty()) a.pop();maxs=0;wide=0;h[n+1]=0;for(int i=1;i<=n+1;i++){if(i!=n+1)scanf("%d",&h[i]);if(a.empty()||h[a.top()]<h[i])//单调递增的{a.push(i);w[i]=1;}else{wide=0;while (!a.empty()&&h[a.top()]>h[i])//维护单调性{wide+=w[a.top()];//累计宽度maxs=max(maxs,(long long)wide*h[a.top()]);//计算答案a.pop();//出栈}a.push(i);w[i]=wide+1;//合并宽度}}printf("%lld\n",maxs);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Orleans解决并发之痛(一):单线程

程序在运行过程中有时会莫名其妙出现代码的某些约束或者执行结果和理想状况不一样&#xff0c;正常逻辑怎么会出现这样的情况&#xff1f;到底发生了什么&#xff1f;好像见了鬼&#xff01;瞬间好无助。 谁来救救我 大多数出现正常逻辑很难解释的时候&#xff0c;我们可能会想…

你们考试,我们都有点紧张呢…

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”考试计划都好久好久了&#xff0c;一直没有时间&#xff0c;终于在今天考了一次。去监考的时候王老师还说&#xff0c;我都有点紧张呢&#xff0c;我说我也是&#xff0c;哈哈哈~上午几…

汇编语言(三十一)之数字字符串加密与解密

输入一串数字&#xff0c;然后进行加密解密输出 程序运行&#xff1a; 代码&#xff1a; datas segmentline_max_len db 0ffh line db 0, 100h dup(?)linesecret db 0, 100h dup(?)linedesecret db 0, 100h dup(?)secret …

ASP.NET Core 运行原理解剖[1]:Hosting

SP.NET Core 是新一代的 ASP.NET&#xff0c;第一次出现时代号为 ASP.NET vNext&#xff0c;后来命名为ASP.NET 5&#xff0c;随着它的完善与成熟&#xff0c;最终命名为 ASP.NET Core&#xff0c;表明它不是 ASP.NET 的升级&#xff0c;而是一个重新设计的Web开发框架。而它一…

公众号文章

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 常用的几个sql整理 1.按照日期统计今天的客流信息。 SELECT * FROM base_disanfang WHERE DATE_FORMAT(create_time,%Y-%m-%d) DATE_FORMAT(NOW(),%Y-%m-%d) 其中base_disanfang为表名…

2017(深圳) .NET技术分享交流会 第二期,将有网络直播

2017 .NET技术分享交流会第一期已在5月13日成功举办&#xff0c;但是有同学反馈哪个地方有点偏&#xff0c;又过去了3个月&#xff0c;这期间一直没找到合适的地方举办活动&#xff0c;一直在南山科技园寻找经济适合的场地&#xff0c;终于找到一个安静&#xff0c;风景好的深圳…

整理几个常用的sql和其他代码

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”常用的几个sql整理1.按照日期统计今天的客流信息。SELECT * FROM base_disanfang WHERE DATE_FORMAT(create_time,%Y-%m-%d) DATE_FORMAT(NOW(),%Y-%m-%d)其中base_disanfang为表名&…

汇编语言(三十三)之四进制转十进制

输入四进制的数&#xff0c;转为十进制输出 程序运行&#xff1a; 代码&#xff1a; datas segmentN_string_max_length db 0ffhN_string db 0, 100h dup(?)N dw 0,0 sum dd 0 input db inp…

Orleans解决并发之痛(二):Grain状态

Grains是Orleans应用程序的构建块&#xff0c;它们是彼此孤立的原子单位&#xff0c;分布的&#xff0c;持久的&#xff0c; 一个典型的Grain是有状态和行为的一个单实例&#xff0c;每个Grain实例的在单线程内执行&#xff0c;Grain之间共享数据通过消息传递&#xff0c;Grain…

汇编语言(三十四)之输出中文

输出中文 程序运行&#xff1a; 代码&#xff1a; daones segmentfull_name db 0,1,2,3,4,5 full_name_length dw $-full_name start_char db 0 change_char_count dw 6color db 1 x dw 40 y …

vue使用element ui实现下拉列表分页的功能!!!

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”前几天做了个功能&#xff0c;需求是使用利用element ui如何给下拉列表分页&#xff0c;经过网上查找&#xff0c;自己摸索&#xff0c;已经完成&#xff0c;今天来记录一下吧。实现的…

ASP.NET Core 运行原理解剖[2]:Hosting补充之配置介绍

在上一章ASP.NET Core 运行原理解剖[1]:Hosting中&#xff0c;我们介绍了 ASP.NET Core 的启动过程&#xff0c;主要是对 WebHost 源码的探索。而本文则是对上文的一个补充&#xff0c;更加偏向于实战&#xff0c;详细的介绍一下我们在实际开发中需要对 Hosting 做一些配置时经…

汇编语言(三十五)之输入字符串以$结束然后输出字母个数

输入字符串以$结束然后输出字母个数 程序运行&#xff1a; 代码&#xff1a; datas segment buff db 100h dup(?)letter_count dw 0nextline db 0dh,0ah,$datas ends codes segment assume cs:codes,ds:datas main proc far push dsmov ax,0push ax mov ax,datasmov ds,ax…

vue中如何使用vi-for限制遍历的条数?只查询前三条、查询4-6条怎么实现?

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”前言今天整理个简单的功能&#xff0c;vue中的v-for如何限制遍历输出的数据&#xff0c;比如我想在一个存放10条数据的集合中只输出3条怎么写&#xff1f;只想从第四条开始输出到第10条…

编译原理(一)之词法分析

词法分析 (1)参考附录1设计一个简单语言的词法分析程序&#xff0c;要求能够处理注释、换行回车、部分复合运算符&#xff08;如>&#xff09;。 (2)设计并实现含多条简单赋值语句的语法分析程序&#xff0c;要求有一定的出错提示与错误恢复功能。 (参考附录2) 附录1:…

粗略使用.NetCore2.0自带授权登陆Authorize

上篇Linux.NetCoreNginx搭建集群 有朋友提及到如果nginx做集群后应该还会有下一篇文章主讲session控制&#xff0c;一般来说就是登陆&#xff1b;本篇分享的内容不是关于分布式session内容&#xff0c;而是netcore自带的授权Authorize&#xff0c;Authorize粗略的用法&#xff…

vue中如何在地图中标点…

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”前言昨天分享了下vue中v-for的一些特殊用法&#xff0c;料想标题给写成了vi-for…太粗心了。文章连接在这里&#xff1a;vue中如何使用v-for限制遍历的条数&#xff1f;只查询前三条、…

被黑客盯上了…数据都给打包带走了…

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”前言在创建数据库的时候&#xff0c;突然之间&#xff0c;发现创建的表通过select * from 表名 查询不到了&#xff0c;于是就开始检查是不是sql语句写错了&#xff0c;检查半天&#…

编译原理(二)之语法分析

采用实验1的简单语言&#xff0c;设计并实现含多条简单赋值语句的语法分析程序&#xff0c;要求采用算符优先的分析算法。 注意与实验1、2的衔接。 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using Syste…

ASP.Net Core Razor 页面路由

在服务器端 Web 应用程序框架中&#xff0c;其中非常重要的设计是开发人员如何将URL与服务器上的资源进行匹配&#xff0c;以便正确的处理请求。最简单的方法是将 URL 映射到磁盘上的物理文件&#xff0c;在 Razor 页面框架中&#xff0c;ASP.NET团队就是这样实现的。 关于 Ra…