poj2559单调栈
来源:互联网 发布:php json数组 编辑:程序博客网 时间:2024/06/06 18:53
题意:在多个矩形中,已知这些矩形的宽度都为1,长度不完全相等,求在这些矩形按题给顺序排列能包括的范围内能得到的面积最大的矩形
先按照从小到大排序,一旦有不满足的就把前面的元素踢出去,并且计算之前一个的最大面积,然后组合成一个新的,但是这个新的的宽是把之前的累加在一起的
如果满足从小到大,就直接存在栈里面
最后都把这些元素提出来,计算相应的面积,并且选出最大的面积输出就好了
#include<stdio.h>#include<stack>using namespace std;struct sets{ __int64 high,wide;}data;int main(){ int n; while(scanf("%d",&n),n) { stack<sets>A; __int64 totalwide,tempans; scanf("%I64d",&data.high); data.wide=1; A.push(data); __int64 ans=data.high*data.wide; for(int i=1;i<n;i++){ scanf("%I64d",&data.high); data.wide=1; if(data.high>=A.top().high){ A.push(data); } else{ totalwide=tempans=0; while(!A.empty()&&A.top().high>data.high){ totalwide+=A.top().wide; tempans=totalwide*A.top().high; if(tempans>ans) ans=tempans; A.pop(); } totalwide+=data.wide; data.wide=totalwide; A.push(data); } } totalwide=tempans=0; while(!A.empty()){ totalwide+=A.top().wide; tempans=totalwide*A.top().high; A.pop(); if(tempans>ans) ans=tempans; } printf("%I64d\n",ans); } return 0;}
0 0
- poj2559模拟单调栈
- poj2559单调栈
- poj2559(单调栈)
- POJ2559单调栈
- 萌萌的单调栈 : poj2796 , poj2559 ,
- poj2559(单调栈)最大矩形面积
- POJ2559 单调队列
- POJ2559 Largest Rectangle in a Histogram [单调栈]
- POJ2559 Largest Rectangle in a Histogram(单调栈)
- 单调栈 poj2559 Largest Rectangle in a Histogram
- [POJ2559]Largest Rectangle in a Histogram(单调栈)
- POJ2559 Largest Rectangle in a Histogram(单调栈)
- poj2559 Largest Rectangle in a Histogram(单调栈)
- POJ2559-Largest Rectangle in a Histogram(单调栈)
- POJ2559 POJ2082 POJ3494(最大矩形面积 单调栈)
- Largest Rectangle in a Histogram POJ2559(单调栈模板)
- 单调栈--poj2559 Largest rectangle in a Histogram
- poj2559 Largest Rectangle in a Histogram (单调栈)
- hdu2255二分图最大权匹配
- Python 学习之字典
- 设置固定textField的个数
- 简化MongoAPI(spring-data-mongo)第三部分----Criteria和Query对象的使用
- 给未来的自己
- poj2559单调栈
- 把二叉树打印成多行
- 写给自己
- Python 学习之集合
- leetcode--Min Stack
- cf#186-C. Mr. Kitayuta, the Treasure Hunter-dp(预推断+offset)
- Rectangle Area-带有交差集矩形面积
- 单链表的反转
- regex_iterator()的使用sregex_iterator(),cregex_iterator()