ZOJ 1985 Largest Rectangle in a Histogram(刷广告)2010辽宁省赛
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 21204 | Accepted: 6831 |
Description

Usually, histograms are used to represent discrete distributions, e.g., the frequencies of characters in texts. Note that the order of the rectangles, i.e., their heights, is important. Calculate the area of the largest rectangle in a histogram that is aligned at the common base line, too. The figure on the right shows the largest aligned rectangle for the depicted histogram.
Input
Output
Sample Input
7 2 1 4 5 1 3 3
4 1000 1000 1000 1000
0
Sample Output
8
4000
Hint
Source
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<stack>
using namespace std; struct node
{
int h,id;
node(int a,int b){ h=a; id=b; } //h存高度,id存第几块
};
int n;
stack<node> Q;
long long a[],l[],r[];
//在a[i]的高度下,能达到的左边界l[i],能达到的右边界r[i] int main()
{
while(~scanf("%d",&n))
{
if(n==) break;
for(int i=;i<=n;i++) scanf("%d",&a[i]);
while(!Q.empty()) Q.pop(); //清空栈Q
memset(l,,sizeof(l));
memset(r,,sizeof(r));
//求l[]数组,O(n)复杂度找左边界
for(int i=;i<=n;i++)
{
if (Q.empty()) {l[i]=; Q.push(node(a[i],i)); continue; }
node u=Q.top();
if (u.h<a[i]) {l[i]=i; Q.push(node(a[i],i)); continue;}
while(u.h>=a[i]) //如果当前高度a[i],比栈顶元素低,则栈顶元素能到达的左边界也能到达。
{
l[i]=l[u.id];
Q.pop();
if (Q.empty()) break;
u=Q.top();
}
Q.push(node(a[i],i) );
} //求r[]数组,扫右边界
while(!Q.empty()) Q.pop();
for(int i=n;i>=;i--)
{
if (Q.empty()) {r[i]=i; Q.push(node(a[i],i)); continue; }
node u=Q.top();
if (u.h<a[i]) {r[i]=i; Q.push(node(a[i],i));continue;}
while(u.h>=a[i])
{
r[i]=r[u.id];
Q.pop();
if (Q.empty()) break;
u=Q.top();
}
Q.push(node(a[i],i) );
} long long sum=;
for(int i=;i<=n;i++)
sum=max(sum,a[i]*(r[i]-l[i]+));
printf("%lld\n",sum);
}
return ;
}
ZOJ 1985 Largest Rectangle in a Histogram(刷广告)2010辽宁省赛的更多相关文章
- poj 2559 Largest Rectangle in a Histogram - 单调栈
Largest Rectangle in a Histogram Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19782 ...
- DP专题训练之HDU 1506 Largest Rectangle in a Histogram
Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base l ...
- Largest Rectangle in a Histogram(DP)
Largest Rectangle in a Histogram Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K ...
- POJ 2559 Largest Rectangle in a Histogram(单调栈)
传送门 Description A histogram is a polygon composed of a sequence of rectangles aligned at a common ba ...
- Largest Rectangle in a Histogram(HDU1506)
Largest Rectangle in a Histogram HDU1506 一道DP题: 思路:http://blog.csdn.net/qiqijianglu/article/details/ ...
- POJ 2559 Largest Rectangle in a Histogram
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18942 Accepted: 6083 Description A hi ...
- Largest Rectangle in a Histogram
2107: Largest Rectangle in a Histogram Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 777 Solved: 22 ...
- HDU 1506 Largest Rectangle in a Histogram (dp左右处理边界的矩形问题)
E - Largest Rectangle in a Histogram Time Limit:1000MS Memory Limit:32768KB 64bit IO Format: ...
- hdu---1506(Largest Rectangle in a Histogram/dp最大子矩阵)
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
随机推荐
- Python 获取文件的创建时间,修改时间和访问时间
# 用到的知识# os.path.getatime(file) 输出文件访问时间# os.path.getctime(file) 输出文件的创建时间# os.path.getmtime(file) 输 ...
- Ubuntu 关闭防火墙
关闭防火墙:service iptables stop
- ubuntu14.04(server amd64)免密码sudo
vi /etc/sudoers.d/nopasswd4sudo 加入以下内容 用户名 ALL=(ALL) NOPASSWD : ALL
- Jmeter 4.0 扩展插件
今天发现Jmeter4.0 也可以安装插件 而且比之前的版本的安装方法更为容易 https://jmeter-plugins.org/ https://jmeter-plugins.org/insta ...
- 中文名文件上传到linux服务器上以后文件名会乱码(openoffice)
1.中文名文件上传后保存在linux服务器上文件名会乱码,但是我们通过SSH直接对服务器上的一个文件进行重命名是可以使用中文的,而且显示出来是正确的,这说明服务器是可以支持中文的. 2.而为什么上传的 ...
- XML_CPP_资料_libXml2_01_Code
ZC: 这里的代码,就是 http://www.cnblogs.com/cppskill/p/6207609.html(我的文章"XML_CPP_资料_libXml2_01 - CppSki ...
- android 开发 出错
Error:Execution failed for task ':app:processDebugResources'. > com.android.ide.common.process.Pr ...
- android二级listview列表
今天来实现以下大众点评客户端的横向listview二级列表,先看一下样式. 这种横向的listview二级列表在手机软件上还不太常见,但是使用过平板的都应该知道,在平板上市比较常见的.可能是因为平板屏 ...
- apache安装方式
1.首先需要下载apachi,apache_2.2.22.msi 2.双击安装包进行安装,安装过程中可能出现一些选择性问题,将重点部分截图如下: 说明:这三个内容就按如上输入即可. 说明:选择自定义安 ...
- eclipse安装adt插件后工具栏不显示android相关图标
到eclipse官网下载luna(开发android,推荐此版本,当前最新版4.4.2)版本的eclipse http://ftp.jaist.ac.jp/pub/eclipse/technology ...