http://poj.org/problem?id=2559

题意:就是找出可以完整连接的最大的矩形面积。

思路:找出单独的一块矩形,往两边延伸,记录两边的比他高的矩形是在哪个位置,然后最右的位置减去最左边的矩形的位置。就是这个矩形最大可构成的面积。

但是,如果一个一个用循环去做的话,结果是必定超时的,所以这里要用到单调栈。

比如找出最左边的比目标矩形要高的矩形的位置的代码

      while(!s.empty())    //对栈首先进行清空。

             s.pop();  

         s.push();     //入栈一个边界位置。

         for(int i=;i<=n;i++){

             for(x=s.top();a[x]>=a[i];x=s.top())   //如果a[x]要比那个a[i]
也就是目标矩形要大的话,那么说明可以继续往左寻找。如果没有比目标矩形要大的话,那么这个就是
它的右边那个就是最临界的那个矩形。
s.pop(); l[i]=x+; s.push(i);
}
 #include <stdio.h>
#include <iostream>
#include <stack> #define X 1000010 using namespace std; stack<int >s;
int n,x;
long long a[X],m,ans,r[X],l[X];
int main()
{
// freopen("in.txt","r",stdin);
while(scanf("%d",&n),n!=){
ans=;
a[]=-;a[n+]=-;
for(int i=;i<=n;i++)
scanf("%lld",&a[i]);
while(!s.empty())
s.pop(); s.push();
for(int i=;i<=n;i++){
for(x=s.top();a[x]>=a[i];x=s.top())
s.pop();
l[i]=x+;
s.push(i);
}
while(!s.empty())
s.pop();s.push(n+);
for(int i=n;i>;i--){
for(x=s.top();a[x]>=a[i];x=s.top())
s.pop();
r[i]=x-;
s.push(i);
if((r[i]-l[i]+)*a[i]>ans) ans=(r[i]-l[i]+)*a[i];
}
printf("%lld\n",ans);
}
return ;
}

POJ 2559的更多相关文章

  1. POJ 2559 Program C

    Submit Status Practice POJ 2559 Description A histogram is a polygon composed of a sequence of recta ...

  2. [POJ 2559]Largest Rectangle in a Histogram 题解(单调栈)

    [POJ 2559]Largest Rectangle in a Histogram Description A histogram is a polygon composed of a sequen ...

  3. poj 2559 Largest Rectangle in a Histogram 栈

    // poj 2559 Largest Rectangle in a Histogram 栈 // // n个矩形排在一块,不同的高度,让你求最大的矩形的面积(矩形紧挨在一起) // // 这道题用的 ...

  4. stack(数组模拟) POJ 2559 Largest Rectangle in a Histogram

    题目传送门 /* 题意:宽度为1,高度不等,求最大矩形面积 stack(数组模拟):对于每个a[i]有L[i],R[i]坐标位置 表示a[L[i]] < a[i] < a[R[i]] 的极 ...

  5. POJ 2559 Largest Rectangle in a Histogram -- 动态规划

    题目地址:http://poj.org/problem?id=2559 Description A histogram is a polygon composed of a sequence of r ...

  6. poj 2559 Largest Rectangle in a Histogram (单调栈)

    http://poj.org/problem?id=2559 Largest Rectangle in a Histogram Time Limit: 1000MS   Memory Limit: 6 ...

  7. POJ 2559 Largest Rectangle in a Histogram(单调栈)

    [题目链接] http://poj.org/problem?id=2559 [题目大意] 给出一些宽度为1的长方形下段对其后横向排列得到的图形,现在给你他们的高度, 求里面包含的最大长方形的面积 [题 ...

  8. 【POJ 2559】 Largest Rectangle in a Histogram

    [题目链接] http://poj.org/problem?id=2559 [算法] 单调栈 [代码] #include <algorithm> #include <bitset&g ...

  9. 题解 POJ 2559【Largest Rectangle in a Histogram】(单调栈)

    题目链接:http://poj.org/problem?id=2559 思路:单调栈 什么是单调栈? 单调栈,顾名思义,就是单调的栈,也就是占中存的东西永远是单调(也就是递增或递减)的 如何实现一个单 ...

随机推荐

  1. 使用maven编译Java项目 http://www.tuicool.com/articles/YfIfIrq

    使用maven编译Java项目 时间 2014-07-17 17:42:37  Way Lau's Blog 原文  http://www.waylau.com/build-java-project- ...

  2. TFS2012 安装 配置笔记

    TFS2012安装   具体请看文档..   http://yunpan.cn/cmt4X6S7TjEgq  访问密码 464e     TFS2012配置 环境:VS2012  SQL2008  T ...

  3. MV*模式的个人理解

    MV*模式主要解决的问题就是 View代码难以维护的问题. MV*模式将View中的逻辑分离出去,形成一个弱逻辑的易于维护的视图. MV*中的*是Model和View的桥梁,负责保持Model和Vie ...

  4. 两个select转移

    <table> <tr> <td> <select multiple="multiple" id="leftSelect&quo ...

  5. 本地自定义了404 和500 错误处理 部署到IIS上显示 服务器内部错误

    问题如图 解决办法如下,在IIS上设置一下即可

  6. nginx同一iP多域名配置方法

    文章转自:http://blog.itblood.com/nginx-same-ip-multi-domain-configuration.html 下面的是我本机的配置: server { list ...

  7. maven 向本地私库导入jar

    mvn install:install-file -DgroupId=<your_group_name> -DartifactId=<your_artifact_name> - ...

  8. 什么是H标签?H1,H2,H3标签?以及和strong标签使用的方法及重要性

    大家都知道,seo的一个很重要的一点就是要把网站做的条理清晰,让搜索引擎很容易的读明白,这个条理清晰不仅体现在网站的物理路径,url等地 方.在<h1><h2><h3&g ...

  9. MySQL 8.0.0 版本发布,亮点都在这了!

    导读 MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.目前MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开 ...

  10. 热更新脚本C#light,ulua,Scorpio性能比较

    http://www.unity蛮牛.com/thread-32861-1-1.html 测试环境: unity4.5.2  三个脚本全是源码导入  PC :处理器 Intel(R) Core(TM) ...