正题

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【单调栈】相关推荐

  1. POJ2559 Largest Rectangle in a Histogram(单调栈)

    题意: 给出一组矩形的高,求最多能拼成矩形的最大面积,看图就很清楚了. 要点: 还是单调栈,现在有点感觉了,单调栈大概就是能求出当前值左右的比它大或小的数的范围.这题用高度作为单调栈,分别往左右找比当 ...

  2. HDU1506 / POJ2339 Largest Rectangle in a Histogram 单调递减栈

    1.什么是单调栈 具有单调性和栈的性质 单调递减栈就是从栈底到栈顶是单调递减的 单调递增栈就是从栈底到栈顶是单调递增的 2.单调栈解决的问题 以自己为最小值,找到最长的区间:单调递增栈 以自己为最大值 ...

  3. 【单调栈】Largest Rectangle in a Histogram(luogu-SP1805/poj 2559)

    Largest Rectangle in a Histogram luogu-SP1805 poj 2559 题目大意: 有n个并排的矩阵,高度为aia_iai​,宽度为1,现在让求包含于这些矩阵的并 ...

  4. HDU 1506 Largest Rectangle in a Histogram(dp、单调栈)

    你是不是飘了?骚年! Problem Description A histogram is a polygon composed of a sequence of rectangles aligned ...

  5. Largest Rectangle in a Histogram (动态规划+奇思妙想单调栈)求最大矩状图面积

    感觉动态规划都是玄妙的很,思维题吧(单调栈思维) 题解:让求最大矩形面积,宽为1,暴力超时 可以发现   当第i-1个比第i个高的时候   比第i-1个高的所有也一定比第i个高 于是可以用到动态规划的 ...

  6. *【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 ...

  7. Largest Rectangle in a Histogram HDU - 1506 解题思路 单调栈

    原题目 Problem Description A histogram is a polygon composed of a sequence of rectangles aligned at a c ...

  8. poj 2559 Largest Rectangle in a Histogram 栈

    // poj 2559 Largest Rectangle in a Histogram 栈 // // n个矩形排在一块,不同的高度,让你求最大的矩形的面积(矩形紧挨在一起) // // 这道题用的 ...

  9. 【Python CheckiO 题解】Largest Rectangle in a Histogram

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  10. hdu 1506 Largest Rectangle in a Histogram 最大矩形

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1506 Largest Rectangle in a Histogram Time Limit: 20 ...

最新文章

  1. 《强化学习周刊》第13期:强化学习应用之金融
  2. Single Number II
  3. leetcode 用java_LeetCode算法题-Heaters(Java实现)
  4. 理解tcp关闭连接中的time_wait状态
  5. Windows系统USB转CDC串口驱动限制说明
  6. yum只下载软件不安装的两种方法
  7. Python 元组tuple - Python零基础入门教程
  8. 小爱同学与小冰将实现联合进步
  9. 微课|中学生可以这样学Python(2.2.4节):逻辑运算符
  10. (原创)在service中定时执行网络操作的几点说明
  11. mysql索引原理及用法
  12. tcga数据下载_手把手教你用R下载TCGA数据:CGDSR包
  13. 安卓桌面整理app_升级到 iOS 13,你还会删除 APP 和整理桌面了吗?
  14. [POJ2559POJ3494] Largest Rectangle in a HistogramLargest Submatrix of All 1’s 「单调栈」
  15. 中国工业行业分类英文翻译
  16. java 找出重复的数字
  17. python实现百度翻译
  18. python生成Androd deviceid
  19. [娱乐]epub电子书文件手动修改作者名等相关事宜
  20. 用Java实现简单的计算器

热门文章

  1. 楼层效果_1一28高楼最好最吉利的楼层是哪层?选楼层要注意什么?
  2. oracle未找到时区,Oracle ADF 未找到时区错误
  3. linux创建备用管理员,sql server 创建备用管理员和只读用户
  4. java控制系统音量_Java 控制 Windows 系统音量-Go语言中文社区
  5. java获取jsp对象的属性_java-从jsp el中的对象获取布尔属性
  6. webpack实战之手写一个loader和plugin
  7. 南昌网络赛E Interesting Series
  8. HDU 6579 Operation (前缀线性基模板题)
  9. 2021牛客暑期多校训练营6 Hopping Rabbit 扫描线 + 矩形 + 细节
  10. HDU - 6955 Xor sum tire树 + 贪心