hdu1506单调栈的宽度
很好的题目,单调栈上的宽度如何求
题解:https://blog.csdn.net/baidu_35643793/article/details/64440095
单调队列和单调栈都是去除没有用的数据,对于本题来说,当一个高度小于前面高度时,那么前面的高度就没用了,因为此时后面柱体宽度拓展的限制条件就是当前高度较小的柱体,而当前柱体只要将之前柱体的宽度吸收进来即可
从左到右遍历每个元素,元素可以向左边扩展到第一个比其低的数,也可以向右扩展到第一个比其低的数,现在让元素入单调栈,栈顶元素大于栈底元素。元素的左宽度在其入栈时求出,是最后一个出栈元素的宽度+1
每个元素在入栈弹出栈内元素的过程中,都可以求出出栈元素的右宽度,是其前面出站元素的左宽度的总和
/*
单调栈:每个元素在入栈时可以的到其左侧可以拓展的宽度,在出站时可以得到其右侧可以拓展的宽度
用两个栈记录下标和左侧宽度
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 100005
#define ll long long int q[maxn],w[maxn],h,n; int main(){
while(scanf("%d",&n),n){
memset(q,-,sizeof q);
int top=;
ll ans=;
for(int i=;i<=n+;i++){
if(i!=n+) scanf("%d",&h);
else h=;
if(h>q[top]) q[++top]=h,w[top]=;
else {
ll cnt=;
while(h<=q[top]){
ans=max(ans,(w[top]+cnt)*q[top]);
cnt=cnt+w[top--];//出栈元素的左宽不断累加就是栈顶元素的右宽
}
q[++top]=h;
w[top]=cnt+;//新入栈的元素左宽是最后一个出队元素总宽+1
}
}
printf("%lld\n",ans);
}
return ;
}
hdu1506单调栈的宽度的更多相关文章
- HDU1506(单调栈或者DP) 分类: 数据结构 2015-07-07 23:23 2人阅读 评论(0) 收藏
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- poj2559/hdu1506 单调栈经典题
我实在是太菜了啊啊啊啊啊 到现在连个单调栈都不会啊啊啊 写个经典题 #include<cstdio> #include<algorithm> #include<cstri ...
- hdu1506 直方图中最大的矩形 单调栈入门
hdu1506 直方图中最大的矩形 单调栈入门 直方图是由在公共基线对齐的矩形序列组成的多边形.矩形具有相同的宽度,但可能具有不同的高度.例如,左侧的数字显示了由高度为2,1,4,5,1,3,3的矩形 ...
- 【单调栈】hdu1506 Largest Rectangle in a Histogram
单调栈的介绍及一些基本性质 http://blog.csdn.net/liujian20150808/article/details/50752861 依次把矩形塞进单调栈,保持其单增,矩形中的元素是 ...
- 51nod 1215 数组的宽度&poj 2796 Feel Good(单调栈)
单调栈求每个数在哪些区间是最值的经典操作. 把数一个一个丢进单调栈,弹出的时候[st[top-1]+1,i-1]这段区间就是弹出的数为最值的区间. poj2796 弹出的时候更新答案即可 #inclu ...
- Largest Rectangle in a Histogram(hdu1506,单调栈裸题)
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- HDU-1506 Largest Rectangle in a Histogram【单调栈】
Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base l ...
- poj 2559 Largest Rectangle in a Histogram (单调栈)
http://poj.org/problem?id=2559 Largest Rectangle in a Histogram Time Limit: 1000MS Memory Limit: 6 ...
- Codeforces548D:Mike and Feet(单调栈)
Mike is the president of country What-The-Fatherland. There are n bears living in this country besid ...
随机推荐
- loadrunner之Java Vuser协议脚本编写
步骤:1.根据自己使用的lr版面选择jdk 1)LR11 1.6 32位 2)LR12 1.7 32位 2.安装好jdk,并搭建java环境变量,安装好java代码编写工具 3.在sr ...
- solr6.4.2之webservice兼容升级
摘要:这次solr底层升级是一次比较大的升级.从底层搜索引擎 solr4.8 升级到 solr6.4.2,由于solr底层从6.x开始以来的jdk必须指定为1.8,而且很多内部实现类都已经废弃或者干脆 ...
- 20190417 Spring Security
参考资料 Spring-Security的4.2.12版本官方文档 Spring Security简介
- 即将上线的Kafka服务器面临的一系列填坑笔记
即将上线的Kafka服务器面临的一系列填坑笔记 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Kafka日志报错:[error] k.m.j.KafkaJMX$ - Fai ...
- Vue.js 模板指令
1. 数据渲染:v-text.v-html(保存了html结构).{{}}(自动更新): 2. 控制模块隐藏:v-if:直接不渲染 DOM 元素: v-show:css 里的 display:none ...
- Nginx 学习笔记(四)nginx-module-vts模块
看看已经搭建好的效果图 1.基本信息 2.过滤信息 3.上游服务器 4.其他进程 1.获取组区域(默认返回json格式数据) (1)mainZones https://www.tinywan.com/ ...
- bootstrap modal垂直居中 (转)
根据博友的经验,总结后请使用方法一就行了 一,修改bootstrap.js 源码 原来的: Modal.prototype.adjustDialog = function () { ].scrollH ...
- 集大软件工程15级个人作业Week2
集大软件工程15级个人作业Week2 快速通读教材<构建之法>,并参照提问模板,提出5个问题. 在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文 列出一些事例或资料, ...
- 推荐几款在Windows中比较好用的软件
gif录制软件:LICEcap 下载地址:https://www.cockos.com/licecap/ 演示
- 使用layer 弹出对话框 子父页面相互参数传递 父页面获取子页面参数实例
一.先看效果: 1.点击三个点的图标弹出了子页面: 2.子页面调用父页面方法,图一调用父页面方法,图二得到父页面var变量. 3.选择之后,关闭弹框,父页面得到子页面单选框选择的v ...