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);}
}
luoguSP1805,POJ2559-Largest Rectangle in a Histogram【单调栈】相关推荐
- POJ2559 Largest Rectangle in a Histogram(单调栈)
题意: 给出一组矩形的高,求最多能拼成矩形的最大面积,看图就很清楚了. 要点: 还是单调栈,现在有点感觉了,单调栈大概就是能求出当前值左右的比它大或小的数的范围.这题用高度作为单调栈,分别往左右找比当 ...
- HDU1506 / POJ2339 Largest Rectangle in a Histogram 单调递减栈
1.什么是单调栈 具有单调性和栈的性质 单调递减栈就是从栈底到栈顶是单调递减的 单调递增栈就是从栈底到栈顶是单调递增的 2.单调栈解决的问题 以自己为最小值,找到最长的区间:单调递增栈 以自己为最大值 ...
- 【单调栈】Largest Rectangle in a Histogram(luogu-SP1805/poj 2559)
Largest Rectangle in a Histogram luogu-SP1805 poj 2559 题目大意: 有n个并排的矩阵,高度为aia_iai,宽度为1,现在让求包含于这些矩阵的并 ...
- 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个高 于是可以用到动态规划的 ...
- *【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 ...
最新文章
- 《强化学习周刊》第13期:强化学习应用之金融
- Single Number II
- leetcode 用java_LeetCode算法题-Heaters(Java实现)
- 理解tcp关闭连接中的time_wait状态
- Windows系统USB转CDC串口驱动限制说明
- yum只下载软件不安装的两种方法
- Python 元组tuple - Python零基础入门教程
- 小爱同学与小冰将实现联合进步
- 微课|中学生可以这样学Python(2.2.4节):逻辑运算符
- (原创)在service中定时执行网络操作的几点说明
- mysql索引原理及用法
- tcga数据下载_手把手教你用R下载TCGA数据:CGDSR包
- 安卓桌面整理app_升级到 iOS 13,你还会删除 APP 和整理桌面了吗?
- [POJ2559POJ3494] Largest Rectangle in a HistogramLargest Submatrix of All 1’s 「单调栈」
- 中国工业行业分类英文翻译
- java 找出重复的数字
- python实现百度翻译
- python生成Androd deviceid
- [娱乐]epub电子书文件手动修改作者名等相关事宜
- 用Java实现简单的计算器
热门文章
- 楼层效果_1一28高楼最好最吉利的楼层是哪层?选楼层要注意什么?
- oracle未找到时区,Oracle ADF 未找到时区错误
- linux创建备用管理员,sql server 创建备用管理员和只读用户
- java控制系统音量_Java 控制 Windows 系统音量-Go语言中文社区
- java获取jsp对象的属性_java-从jsp el中的对象获取布尔属性
- webpack实战之手写一个loader和plugin
- 南昌网络赛E Interesting Series
- HDU 6579 Operation (前缀线性基模板题)
- 2021牛客暑期多校训练营6 Hopping Rabbit 扫描线 + 矩形 + 细节
- HDU - 6955 Xor sum tire树 + 贪心