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 ...
随机推荐
- GBDT用于分类问题
一.简介 GBDT在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一,在前几年深度学习还没有大行其道之前,gbdt在各种竞赛是大放异彩.原因大概有几个 一:效果确实挺不错. 二:既可以用于分类 ...
- CM记录-CDH故障修复处理记录
CDH大数据集群修复记录 1)cm web打不开,查看监听7180端口产生了很多进程,于是kill进程:重启cloudera-cmf-server服务,几秒钟就挂了,查看cloudera-scm-se ...
- mybatis中Parameter index out of range (1 > number of parameters, which is 0).
Parameter index out of range (1 > number of parameters, which is 0).(参数索引超出范围) 在mybatis里面写就是应该是 l ...
- WebLogic Server添加删除补丁操作【转】【补】
WebLogic Server添加删除补丁操作 0 查看当前weblogic版本 [weblogic@localhost bin]$ cd /data/bea/weblogic11/wlserver_ ...
- CentOS6.8下安装redis并配置开机自启动
参考资料:http://www.bubuko.com/infodetail-1006383.html http://www.cnblogs.com/skyessay/p/6433349.html ...
- Shell + crontab 实现日志压缩归档
Shell + crontab 实现日志压缩归档 crontab # archive the ats log days. */ * * * * root /bin/>& shell #! ...
- ;(function ($, undefined){ })(jQuery); 的使用及说明
对于很多初学者来说很难明白这表示什么,下边我将为大家介绍其相应的作用. 1.代码最前面的分号,可以防止多个文件压缩合并以为其他文件最后一行语句没加分号,而引起合并后的语法错误. 2.匿名函数(func ...
- 微信开发创业交流QQ群列表
方倍工作室参与或主导的微信相关的QQ社群列表,欢迎对照加入. QQ群号 群名称 说明 推荐 518924126 微信平台开发有问必答 知识付费 ★★★★★ 188280503 微信公众平台开发最佳实 ...
- MySql Workbench导出ER图并存为PDF文件
一.登陆数据库 二.点击Database => Reverse Engineer 三.填入登陆信息后next => next,选择要生成ER模型的数据库 四.点击next => n ...
- 20155209 2016-2017-2 《Java程序设计》第九周学习总结 ## 教材学习内容总结
教材学习内容总结 JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据. 执行流程: •连接数据源,如:数据库. •为数据库传递查询和更新指令. •处理数据库响应并返回的结 ...