zoukankan      html  css  js  c++  java
  • HDU 1506 Largest Rectangle in a Histogram(DP)

    Largest Rectangle in a Histogram
     

    大意:找到面积最大的矩形

     

    思路:对于每一个a[i],用dp找出a[i]左边和右边连续大于自己的数的长度 

        l[i]表示比a[i]大的数连续的最左边的位置
        r[i]表示比a[i]大的数连续的最右边的位置

     1 #include <map>
     2 #include <stack>
     3 #include <queue>
     4 #include <math.h>
     5 #include <stdio.h>
     6 #include <string.h>
     7 #include <iostream>
     8 #include <algorithm>
     9 #define LL __int64
    10 using namespace std;
    11 
    12 LL a[100010], dp_l[100010], dp_r[100010];
    13 
    14 void run()
    15 {
    16     int n;
    17     while(~scanf("%d", &n) && n)
    18     {
    19         for(int i = 1; i <= n; i++)
    20         {
    21             scanf("%I64d", &a[i]);
    22         }
    23         dp_l[1] = 1;
    24         dp_r[n] = n;
    25         for(int i = 2; i <= n; i++)
    26         {
    27             int t = i;
    28             while(t > 1 && a[i] <= a[t-1])     ///DP
    29             {
    30                 t = dp_l[t-1];
    31             }
    32             dp_l[i] = t;
    33         }
    34         for(int i = n-1; i >= 1; i--)
    35         {
    36             int t = i;
    37             while(t < n && a[i] <= a[t+1])     ///Dp
    38             {
    39                 t = dp_r[t+1];
    40             }
    41             dp_r[i] = t;
    42         }
    43         LL max = 0;
    44         for(int i = 1; i <= n; i++)
    45         {
    46             if((dp_r[i]-dp_l[i]+1)*a[i] > max)
    47                 max = (dp_r[i]-dp_l[i]+1)*a[i];
    48         }
    49         printf("%I64d
    ", max);
    50     }
    51 }
    52 
    53 int main(void)
    54 {
    55     run();
    56 
    57     return 0;
    58 }
    Largest Rectangle in a Histogram
  • 相关阅读:
    华为上机练习题--求两个数组的总和
    C++设计模式之状态模式(四)
    深入理解java嵌套类和内部类
    c++实现精确计时
    Linux-中断和中断处理
    使用C#对MongoDB中的数据进行查询,改动等操作
    淘特房产CMS系统 7.5
    sass03 变量、样式导入
    sass02
    sass01
  • 原文地址:https://www.cnblogs.com/Silence-AC/p/3414874.html
Copyright © 2011-2022 走看看