单调队列 POJ 2559 Largest Rectangle in a Histogram
来源:互联网 发布:java实现音乐网站 编辑:程序博客网 时间:2024/05/16 23:58
这道题交的时候神奇ac了,感觉好开心wakaka
题意:在给出的方块的组合图形中找到最大的矩形,并输出最大矩形的面积!
从第一个位置到第n个位置循环,循环操作为:找出当前位置右边的比它低的位置,说明已经不能继续延伸了,算出这种情况下的面积在比较看是否为最大面积
注意队列中有两个元素,一个是当前的高度,另一个是起始的位置,
#include<cstdio>#include<queue>#include<algorithm>#include<iostream>#include<cstring> using namespace std;long long num[100000+5];int main(){ long long n; while(~scanf("%I64d",&n)){ if(n==0) break; memset(num,0,sizeof(num)); for(long long i=1;i<=n;i++){ scanf("%I64d",&num[i]); } deque<pair<long long,long long> >minq; minq.clear(); long long ans=0; for(long long i=1;i<=n;i++){ long long my_s=i; while(!minq.empty()&&num[i]<minq.back().second){ my_s=min(my_s,minq.back().first); long long tmp=(i-minq.back().first)*minq.back().second; ans=max(ans,tmp); minq.pop_back(); } minq.push_back(make_pair(min(i,my_s),num[i])); } while(!minq.empty()){ long long kk=minq.front().second*(n-minq.front().first+1); ans=max(ans,kk); minq.pop_front(); } printf("%I64d\n",ans); } return 0;}
!!!注意:整个循环结束后,有一个非严格单调递增队列的在deque中,如::1 1 3 3
要计算这个所组成的矩形看看是否可能是最终答案!因为其单调递增特性,所以矩形的长度为n-(起始位置)
0 0
- 单调队列 POJ 2559 Largest Rectangle in a Histogram
- POJ 2559 -- Largest Rectangle in a Histogram ( 单调栈 )
- 【单调栈】POJ-2559 Largest Rectangle in a Histogram
- POJ 2559 Largest Rectangle in a Histogram(单调栈)
- POJ 2559 Largest Rectangle in a Histogram RMQ || 单调栈
- POJ 2559 Largest Rectangle in a Histogram(单调栈)
- POJ - 2559 Largest Rectangle in a Histogram 单调栈
- 【单调栈】POJ 2559 Largest Rectangle in a Histogram
- POJ 2559 Largest Rectangle in a Histogram(单调栈)
- POJ-2559-Largest Rectangle in a Histogram-单调栈
- 【POJ 2559】Largest Rectangle in a Histogram(单调栈)
- poj 2559 Largest Rectangle in a Histogram(单调栈)
- poj--2559 Largest Rectangle in a Histogram(单调栈)
- 单调栈1002 POJ 2559 Largest Rectangle in a Histogram
- POJ 2559 Largest Rectangle in a Histogram 单调栈
- [POJ 2559 Largest Rectangle in a Histogram] 单调栈
- POJ 2559 Largest Rectangle in a Histogram (单调栈)
- [poj 2559] Largest Rectangle in a Histogram:单调栈
- 矩阵链乘法
- iOS 开发-GCD介绍:基本概念和Dispatch Queue
- Android 估值器工具类valueUtil
- 第6课:Spark Streaming源码解读之Job动态生成和深度思考
- 基数排序
- 单调队列 POJ 2559 Largest Rectangle in a Histogram
- X-Sequence
- c3p0数据源连接池
- Btrace使用小结
- 登录秒领2个月PPTV会员秒到 无需复杂步骤
- Different Ways to Add Parentheses
- 【Dongle】【Web】牛腩新闻发布系统之前篇
- 对LIST集合中的Map集合做排序
- Innodb中的事务隔离级别和锁的关系