• POJ2559最大矩形面积——单调栈


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

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int cnt,l[100005],r[100005],q[100005];
    long long n,a[100005];
    int main()
    {
        while(1)
        {
            scanf("%lld",&n);
            if(!n)return 0;
            for(int i=1;i<=n;i++)
            {
                scanf("%lld",&a[i]);
                while(a[i]<a[q[cnt]]&&cnt)
                    r[q[cnt--]]=i;
                q[++cnt]=i;
            }
            while(cnt)r[q[cnt--]]=n+1;
            for(int i=n;i;i--)
            {
                while(a[i]<a[q[cnt]]&&cnt)
                    l[q[cnt--]]=i;
                q[++cnt]=i;
            }
            while(cnt)l[q[cnt--]]=0;
            long long mx=0;
            for(int i=1;i<=n;i++)
            {
                long long v=a[i]*(r[i]-l[i]-1);//long long
                if(v>mx)mx=v;
            }
            printf("%lld
    ",mx);
            mx=0;//
        }
    }
  • 相关阅读:
    优化--工具
    架构
    Gradle
    战争迷雾
    进度管理
    工具
    架构
    牛人
    apk 破解
    效率
  • 原文地址:https://www.cnblogs.com/Narh/p/8445781.html
Copyright © 2020-2023  润新知