pku 2082 Terrible Sets

标签: iostream merge algorithm report struct 图形
723人阅读 评论(0) 收藏 举报

这道题感觉就是在描述几何问题 (largest rectangle ),当然是用代数方式。

第一个想到的方法是DP,O(n^2),同枚举没什么区别。

再一个容易想到的办法,按高度,最高的有机会“自成一家”,otherwise, the taller part is droped, the remaining is added to taller one on it's sides, and so one. Time complexity: O(nlgn)[sort]+O(n)[merge] = O(nlgn). max N is 50000, worth a try.

The O(n) algorithm given by report: from left to right calculate the area of one higher than both sides, then merge with higher side, and go on.

#include <iostream>
#define N 50001
using namespace std;

struct Rect
{
	int w,h;
};
Rect rect[N];
int top; // use it as a stack

int main()
{
	int n;
	__int64 s;
	Rect tmp,tmp2;
	while (scanf("%d",&n)!=EOF)
	{
		if (n==-1)	break;
		rect[0].h = rect[0].w = 0;
		s = 0; 
		top =1;
		for (int i=1; i<=n; ++i)
		{
			scanf("%d%d",&tmp.w,&tmp.h);

			while (tmp.h < rect[top-1].h)
			{
				if (rect[top-1].h*rect[top-1].w>s)
                    s = rect[top-1].h*rect[top-1].w;

				if (rect[top-2].h > tmp.h)
				{
					rect[top-2].w +=rect[top-1].w;
					--top;
				}
				else
				{
					tmp.w += rect[top-1].w;
					--top;
					break;
				}
			}
			rect[top] = tmp;
			++top;
		}
		while (top>=2)
		{
			if (rect[top-1].h*rect[top-1].w>s)
                    s = rect[top-1].h*rect[top-1].w;
			rect[top-2].w += rect[top-1].w;
			--top;
		}
		printf("%I64d/n",s);
	}
}

 

http://acm.pku.edu.cn/JudgeOnline/problem?id=1755 这道题用另一方式描述了一道计算几何问题。

总的说来是图形化的描述。

做这题时想到了LRJ黑书上的打造王冠那题。

查看评论

POJ 2082 Terrible Sets(可怕的矩形)

。。一个好题。。 Terrible Sets Time Limit: 1000MS   Memory Limit: 30000K Total Submissi...
  • shyazhut
  • shyazhut
  • 2017-04-14 17:55:37
  • 317

POJ 2082 Terrible Sets(栈)

Terrible Sets Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4348   ...
  • zwj1452267376
  • zwj1452267376
  • 2016-07-19 17:37:39
  • 298

POJ 2082 Terrible Sets

#include #include #include using namespace std; #define N 50010 struct S{ int startPos; int ...
  • u011964107
  • u011964107
  • 2014-07-21 11:13:31
  • 211

poj 2082——Terrible Sets

题意:求给出矩形中能找出最大矩形的面积 思路:题目中给出了集合B,S,T,
  • u010734277
  • u010734277
  • 2014-09-19 16:50:05
  • 367

POJ 2082 Terrible Sets

题意:给你连续n个矩阵的长和宽,求出最大连续矩阵的面积。 单调栈。也可用DP写,具体和HDU1505类似。这里就写单调队列了。 #include #include #include #inc...
  • wangjie_wang
  • wangjie_wang
  • 2013-08-09 19:22:45
  • 309

POJ 2082 Terrible Sets

题目大意:         若干矩形相互紧挨着在一条轴线上排成一排,求这些矩形所覆盖的区域中面积最大的矩形,输出其面积。         !!!和POJ 2559类同(只不过其每个矩形的底边长都是1)...
  • u013569656
  • u013569656
  • 2014-02-24 01:16:01
  • 535

Terrible Sets POJ - 2082

题目链接:点我 Let N be the set of all natural numbers {0 , 1 , 2 , . . . }, and R be the set of all rea...
  • cccruel
  • cccruel
  • 2017-07-21 14:23:36
  • 105

poj 2082 Terrible Sets

Terrible Sets Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3177   ...
  • u012866104
  • u012866104
  • 2014-08-20 20:12:12
  • 431

ZOJ 2422- Terrible Sets-单调栈

http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=40261 题面真是神tm难懂。。。。。给你n个连续的矩形,求组合成的...
  • viphong
  • viphong
  • 2016-05-15 17:51:29
  • 271

Terrible Sets(单调栈,一开始还被题目描述吓到了,理解样例后发现就是纸老虎题。。。)

Link:http://poj.org/problem?id=2082 Terrible Sets Time Limit: 1000MS   M...
  • Enjoying_Science
  • Enjoying_Science
  • 2015-08-23 16:27:28
  • 676
    个人资料
    等级:
    访问量: 4万+
    积分: 846
    排名: 6万+
    文章分类
    最新评论