zoukankan      html  css  js  c++  java
  • POJ-2082-Terrible Sets

    链接:https://vjudge.net/problem/POJ-2082#author=0

    题意:

    挨个给n个矩形的宽和高,求内部矩形的最大面积

    思路:

    单调栈,每次tmp记录出栈的总宽度。记录到下一次出栈要增加的宽度。

    代码:

    #include <iostream>
    #include <memory.h>
    #include <vector>
    #include <map>
    #include <algorithm>
    #include <cstdio>
    #include <math.h>
    #include <queue>
    #include <string>
    #include <stack>
    
    using namespace std;
    
    typedef long long LL;
    
    const int MAXN = 5e4 + 10;
    
    struct Squere
    {
        int _w;
        int _h;
    }squ[MAXN];
    
    int main()
    {
        int n;
        while (scanf("%d", &n))
        {
            if (n == -1)
                break;
            for (int i = 1;i <= n;i++)
                scanf("%d%d", &squ[i]._w, &squ[i]._h);
            stack<Squere> r;
            int res = 0;
            for (int i = 1;i <= n;i++)
            {
                int tmp = 0;
                while (!r.empty() && r.top()._h > squ[i]._h)
                {
                    Squere f = r.top();
                    r.pop();
                    res = max(res, f._h * (f._w + tmp));
                    squ[i]._w += f._w;
                    tmp += f._w;
                }
                r.push(squ[i]);
            }
            while (!r.empty())
            {
                Squere f = r.top();
                r.pop();
                res = max(res, f._h * f._w);
                if (!r.empty())
                    r.top()._w += f._w;
            }
            printf("%d
    ", res);
        }
    
        return 0;
    }
    

      

  • 相关阅读:
    uva1610 Party Games
    uva1442 Cav
    uva1609 Foul Play
    uva1608 Non-boring sequences
    uva12174 滑动窗口+预处理
    uva 1451 数形结合
    light oj 1336 sigma function
    找常用词(字符串处理)问题
    指定排序问题
    完数问题
  • 原文地址:https://www.cnblogs.com/YDDDD/p/10606792.html
Copyright © 2011-2022 走看看