• poj2559


    题意:给出一个柱状图,各柱之间没有空隙。要求在这些柱覆盖的面积中画出一个最大的矩形(可跨越多个柱),求该矩形面积。

    分析:用栈来维护一个严格升序序列,出栈时对元素的扩展面积进行计算,栈顶元素左右的扩展范围是,栈中的前一个元素的位置+1到当前读入元素的位置-1。

    long long = int * int的时候第一个int要强制转换为long long。

    View Code
    #include <iostream>
    #include
    <cstdio>
    #include
    <cstdlib>
    #include
    <cstring>
    usingnamespace std;

    #define maxn 100005

    struct polygon
    {
    int height, pos;
    } stk[maxn];

    int main()
    {
    //freopen("t.txt", "r", stdin);
    int n, top;
    longlong ans;
    stk[
    0].pos =0;
    while (scanf("%d", &n), n !=0)
    {
    top
    =0;
    ans
    =0;
    for (int i =1; i <= n; i++)
    {
    int a;
    scanf(
    "%d", &a);
    while (top >0&& a <= stk[top].height)
    {
    if (ans < ((longlong) (i -1) - stk[top -1].pos)
    * stk[top].height)
    ans
    = ((longlong) (i -1) - stk[top -1].pos)
    * stk[top].height;
    top
    --;
    }
    top
    ++;
    stk[top].height
    = a;
    stk[top].pos
    = i;
    }
    while (top >0)
    {
    if (ans < ((longlong) (n - stk[top -1].pos))
    * (longlong) stk[top].height)
    ans
    = ((longlong) (n - stk[top -1].pos))
    * (longlong) stk[top].height;
    top
    --;
    }
    printf(
    "%lld\n", ans);
    }
    return0;
    }
  • 相关阅读:
    JAVA集合框架01
    java基础===>点餐系统
    java基础===>数组的应用
    java基础===>双重循环打印图形
    java基础 ===》循环结构
    JAVA基础==>witch的应用!
    选择结构!
    路由系统
    flask使用及返回值、配置文件的四种方式
    短信验证码操作
  • 原文地址:https://www.cnblogs.com/rainydays/p/2050470.html
Copyright © 2020-2023  润新知