poj-最多长方形数
2016-08-20 16:29
78 查看
题意:紧贴X轴有一些相互挨着的长方形,给定每个长方向的长和宽,求形成最大矩形是多少。
解法:堆栈,矩形依次入栈,保持高度递增。
解法:堆栈,矩形依次入栈,保持高度递增。
#include<stdio.h> #include<stdlib.h> #include<stack> #include<iostream> #include<algorithm> using namespace std; struct node { int a; int b; } aa; int main() { int t,n,m,k,tw,th,ll; while(~scanf("%d",&t)) { if(t==-1) break; int sum=0; stack<node>ss; ll=0; while(t--) { scanf("%d%d",&aa.a,&aa.b); if(aa.b>=ll) ss.push(aa); else { tw=0; m=0; while(!ss.empty()&&ss.top().b>>aa.b) { tw+=ss.top().a; m=tw*ss.top().b; if(m>sum) sum=m; ss.pop(); } tw+=aa.a; aa.a=tw; ss.push(aa); } ll=aa.b; } tw=0; m=0; while(!ss.empty()) { tw+=ss.top().a; m=tw*ss.top().b; if(m>sum) sum=m; ss.pop(); } printf("%d\n",sum); } return 0; }
相关文章推荐
- POJ 3693 Maximum repetition substring(重复次数最多的连续子串 字典序最小)
- POJ 1118 Lining Up(我的水题之路——斜率最多)
- POJ 2117--Electricity【点双联通 && 求删去一个点后,图最多有多少块连通】
- (Relax ST1.12)POJ 2606 Rabbit hunt(给出若干个点,求最多能有多少个点共线)
- poj 3107 Godfather(树形DP,点的个数较多, 删点使得剩余部分结点最多的最小值)
- POJ 1787 Charlie's Change 最多金币
- poj 1743Maximum repetition substring(后缀数组+RMQ+重复次数最多的连续重复子串))
- poj 3693 重复次数最多的连续重复子串(后缀数组+RMQ)
- 后缀数组(重复次数最多的最长重复子串)—— POJ 3693
- POJ 1981 Circle and Points(求半径R圆覆盖最多点数及由圆上两点和半径求圆心)
- poj 1981 单位圆套最多点
- poj-1321棋盘问题(dfs 找出最多有几种摆放棋子的可能)
- 【同一直线最多点】 poj 1118+2606+2780
- poj 3693 后缀数组 重复次数最多的连续重复子串
- POJ 3693 重复次数最多的子串是什么?【后缀数组】
- 数长方形有多少个?POJ(1693)
- POJ 2715 谁拿了最多奖学金 解题报告
- POJ 1730 Perfect Pth Powers - 找一个数最多是第几方数...暴力解决...
- 补充一下我对 POJ 3273 的理解,这肯定是我一生写的最多的题解。。。
- poj 1981 Circle and Points(固定半径的圆能覆盖的最多点数)