POJ2559 Largest Rectangle in a Histogram(单调栈)
题意:
给出一组矩形的高,求最多能拼成矩形的最大面积,看图就很清楚了。
要点:
还是单调栈,现在有点感觉了,单调栈大概就是能求出当前值左右的比它大或小的数的范围。这题用高度作为单调栈,分别往左右找比当前高度大的数的范围,最后求个面积即可。
15402130 | Seasonal | 2559 | Accepted | 1440K | 157MS | C++ | 823B | 2016-04-17 10:59:21 |
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define maxn 100005
int a[maxn],stack[maxn];
int l[maxn], r[maxn];int main()
{int n, i, j,top;while (scanf("%d",&n)&&n){for (int i = 1; i <= n; i++)scanf("%d", &a[i]);top = 0;for (i = 1; i <= n; i++){while (top > 0 && a[stack[top - 1]] >= a[i])//寻找左边界top--;l[i] = top == 0 ? 1 : stack[top-1]+1;//如果大于栈顶,要+1来使左边界位于当前值,同样小于栈顶也要+1,因为栈顶肯定不能在边界内stack[top++] = i;}top = 0;for (i = n; i >= 1; i--){while (top >0&&a[stack[top - 1]] >= a[i])//倒序寻找右边界top--;r[i] = top == 0 ? n : stack[top-1]-1;stack[top++] = i;}long long max = -1;for (i = 1; i <= n; i++)if (max < (long long)a[i] * (r[i] - l[i]+1))//边界之差要+1max = (long long)a[i] * (r[i] - l[i]+1);printf("%lld\n", max);}return 0;
}
转载于:https://www.cnblogs.com/seasonal/p/10343778.html
POJ2559 Largest Rectangle in a Histogram(单调栈)相关推荐
- HDU1506 / POJ2339 Largest Rectangle in a Histogram 单调递减栈
1.什么是单调栈 具有单调性和栈的性质 单调递减栈就是从栈底到栈顶是单调递减的 单调递增栈就是从栈底到栈顶是单调递增的 2.单调栈解决的问题 以自己为最小值,找到最长的区间:单调递增栈 以自己为最大值 ...
- HDU 1506 Largest Rectangle in a Histogram(dp、单调栈)
你是不是飘了?骚年! Problem Description A histogram is a polygon composed of a sequence of rectangles aligned ...
- Largest Rectangle in a Histogram (动态规划+奇思妙想单调栈)求最大矩状图面积
感觉动态规划都是玄妙的很,思维题吧(单调栈思维) 题解:让求最大矩形面积,宽为1,暴力超时 可以发现 当第i-1个比第i个高的时候 比第i-1个高的所有也一定比第i个高 于是可以用到动态规划的 ...
- 【单调栈】Largest Rectangle in a Histogram(luogu-SP1805/poj 2559)
Largest Rectangle in a Histogram luogu-SP1805 poj 2559 题目大意: 有n个并排的矩阵,高度为aia_iai,宽度为1,现在让求包含于这些矩阵的并 ...
- *【HDU - 1506】【POJ - 2559】Largest Rectangle in a Histogram(单调栈或动态规划)
题干: Description A histogram is a polygon composed of a sequence of rectangles aligned at a common ba ...
- Largest Rectangle in a Histogram HDU - 1506 解题思路 单调栈
原题目 Problem Description A histogram is a polygon composed of a sequence of rectangles aligned at a c ...
- poj 2559 Largest Rectangle in a Histogram 栈
// poj 2559 Largest Rectangle in a Histogram 栈 // // n个矩形排在一块,不同的高度,让你求最大的矩形的面积(矩形紧挨在一起) // // 这道题用的 ...
- 【Python CheckiO 题解】Largest Rectangle in a Histogram
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- hdu 1506 Largest Rectangle in a Histogram 最大矩形
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1506 Largest Rectangle in a Histogram Time Limit: 20 ...
最新文章
- 第一章 Linux内核简介
- Vue路由传参及传参后刷新导致参数消失处理
- java strlen,跟妹妹聊到 Java 16 新特征,真香!
- C++之安装boost库
- 十进制转换成二进制java_计算机为什么采用二进制?
- gis怎么改鼠标滚轮缩放_【精华】ArcGIS鼠标滚轮
- 你的不自律,正在慢慢毁掉你
- c盘python27文件夹可以删除嘛_C盘的哪些文件夹可以删
- kibana异常 License information from the X-Pack plugin could not be obtained from Elasticsearch
- IDEA学习篇——finds duplicated code提示
- 一个人一个微博、一个App一个故事:通过微博草根账号做英语学习App的“爱卡微口语”获晨脉创投天使投资
- excel自动增加序号
- GPU accelerated TensorFlow Lite / TensorRT applications - 3D Handpose project(Part A)项目简介
- 毕业设计 基于stm32的血压测量检测系统 - 物联网 单片机
- Python爬虫+数据可视化教学:分析猫咪交易数据
- 利用 Travis CI 把 Android 项目部署到 github
- poi-tl,根据word模板导出word(表格行循环,表格无表头的情况)
- 微信公众号如何做数据分析?4大模块34个关键指标
- 机器学习基础--math(21)--皮亚诺公理
- ElementUI中某一列插入组件(slot-scope=“scope“用法)
热门文章
- gitlab在centons环境下的安装及使用
- 20155230 2016-2017-2 《Java程序设计》第十周学习总结
- Python类的实例属性详解
- HDOJ 1247 HDU 1247 Hat’s Words ACM 1247 IN HDU
- c语言之 malloc函数详解 在堆中动态分配内存malloc和new的区别
- MFC中OnCtlColor的用法(改变控件颜色)
- MFC SetWindowPos
- mfc中的.rc和.rc2出错fatal error RC1015: cannot open include file 'res\ModalD
- 多线程—生产者消费者模式、银行家算法
- IOS基础之毛毛虫案例-重力