poj 2559

原创 2016年05月30日 21:07:20
#include <iostream>
#include <cstdio>
using namespace std;

const int N = 100005;

struct Elem
{
	int height;
	int count;
};

Elem stack[N];
int top;

int main()
{
	int height, n;
	long long ans, tot, tmp;
	while (scanf("%d", &n) != EOF && n)
	{
		top = 0;
		ans = 0;
		for (int i = 0; i < n; ++i)
		{
			scanf("%d", &height);
			tmp = 0;
			while (top > 0 && stack[top - 1].height >= height)
			{
				tot = stack[top - 1].height * (stack[top - 1].count + tmp);
				if (tot > ans) ans = tot;
				tmp += stack[top - 1].count;
				--top;
			}
			stack[top].height = height;
			stack[top].count = 1 + tmp;
			++top;
		}
		int tmp = 0;
		while (top > 0)
		{
			tot = stack[top - 1].height * (stack[top - 1].count + tmp);
			if (tot > ans) ans = tot;
			tmp += stack[top - 1].count;
			--top;
		}
		printf("%lld\n", ans);
	}
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/b2utyyomi/article/details/51541144

POJ2559 最大矩形面积

给定从左到右多个矩形,已知这此矩形的宽度都为1,长度不完全相等。这些矩形相连排成一排,求在这些矩形包括的范围内能得到的面积最大的矩形,打印出该面积。所求矩形可以横跨多个矩形,但不能超出原有矩形所确定的...
  • alongela
  • alongela
  • 2012-11-27 16:58:19
  • 7808

单调栈(poj -- 2559)

给定从左到右多个矩形,已知这此矩形的宽度都为1,长度不完全相等。这些矩形相连排成一排,求在这些矩形包括的范围内能得到的面积最大的矩形,打印出该面积。所求矩形可以横跨多个矩形,但不能超出原有矩形所确定的...
  • qq1169091731
  • qq1169091731
  • 2016-07-23 20:54:20
  • 633

POJ2559Largest Rectangle in a Histogram

单调栈的第一个题,看过很多遍了,最近才真的明白是什么意思 POJ2559 题意:给定n个高度不定的,宽度为1的小矩形,求可以构成的最大面积 方法:所谓单调栈,是这样一种数据结构:从栈底到...
  • kevin66654
  • kevin66654
  • 2016-05-30 21:29:06
  • 159

poj 2559 单调栈

题目大意:求每个值以它为最小值(可以等于)的最大区间长度 思路:用单调栈维护一个单调不增的序列 这里将一遍正向循环的做法: 首先:栈若非空,且此时栈顶元素大于当前元素:那么由于当前元素比栈顶元素...
  • Lifel
  • Lifel
  • 2017-08-15 21:20:17
  • 90

poj 2559 Largest Rectangle in a Histogram 求面积最大的矩形(单调栈)

Largest Rectangle in a Histogram题目大意给出一个数N代表有多少个矩形,然后下面有N个数代表每个矩形的高度,宽度均为1。最后求这N个矩形组成的最大面积!解题思路很容易想到...
  • woshinannan741
  • woshinannan741
  • 2016-08-31 00:05:03
  • 1910

POJ 2559 水题

点击打开链接 题意:给出一些连续的高度,求最大可以形成的长方形 思路:对于每一个高度求出它左右用这个高度可以覆盖到的左右两个位置,用L[i]和R[i]来保存,相乘后输出最大值即可 #include ...
  • Dan__ge
  • Dan__ge
  • 2016-03-14 19:53:02
  • 665

单调栈详解 + poj 2796 poj 2559 CF 547B

单调栈: 定义:用栈结构来实现,使得遍历数组中栈顶元素保持一定范围的最大或最小,并且栈中元素始终保持单调性的栈。 功能:用以快速(O(n))求出数组中某连续子集中的最大值或者最小值。 原理: 以求某连...
  • u013508213
  • u013508213
  • 2015-05-28 16:12:47
  • 756

栈(poj 2559)

总结一下栈在序列上的某些应用.它的结构自然是不必说的,这里只是总结一下他在处理单调性问题方面的应用. 1. 大于 ii 的序列段给你一些宽度为1的直方图,每一个的高为 $h_i$ 问你这些直方图所覆...
  • Dylan_Frank
  • Dylan_Frank
  • 2017-03-06 21:18:08
  • 126

poj 2559

#include #include using namespace std; const int N = 100005; struct Elem { int height; int cou...
  • b2utyyomi
  • b2utyyomi
  • 2016-05-30 21:07:20
  • 131

poj 2559 单调栈

poj 2559 单调栈
  • chai_jing
  • chai_jing
  • 2016-07-06 10:05:33
  • 321
收藏助手
不良信息举报
您举报文章:poj 2559
举报原因:
原因补充:

(最多只允许输入30个字)