zoukankan      html  css  js  c++  java
  • poj2559 Largest Rectangle in a Histogram

    题意: 求最大矩形面积。

    思路: 维护单调递增的矩形高度,当出现不能维护单调性的数加入时,开始维护面积累计ans

      ans = max{ans , 当前矩形高度×当前位置到最右的宽度};

    最后再加入0,清空栈。

    ps:跪jzt学长/。

     1 #include <stdio.h>
     2 #include <algorithm>
     3 using namespace std;
     4 struct node{
     5     long long  height, width;
     6 }stack[100010];
     7 long long n, height, top, tmp, ans;
     8 int main(){
     9     while (scanf("%lld", &n)!=EOF&&n){
    10         top= 0;ans = 0;height = 0;
    11         for (int i = 1; i <= n; i++){
    12             scanf("%lld", &height); tmp = 0;
    13             while (top > 0 && stack[top].height > height){ans = max (ans , stack[top].height * (tmp +stack[top].width));tmp += stack[top].width;top--;}
    14             stack[++top].height = height;
    15             stack[top].width = 1 + tmp;
    16         }
    17         tmp = 0;
    18         while (top > 0){ans = max (ans , stack[top].height * (tmp +stack[top].width));tmp += stack[top].width;top--;}
    19         printf("%lld
    ", ans);
    20     }
    21 }
  • 相关阅读:
    Linux删除文件相关命令
    Bing语句
    VS2013配置Winpcap
    node10-mongoose
    node09-cookie
    node08-express
    node07-http
    node06-path
    node05-fs
    node04-buffer
  • 原文地址:https://www.cnblogs.com/z52527/p/4616096.html
Copyright © 2011-2022 走看看