CDOJ 1069 秋实大哥去打工 单调栈 下标处理

E - 秋实大哥去打工

Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu

Submit Status Practice UESTC 1069

Appoint description: 
System Crawler  (2016-04-24)

Description

天行健,君子以自强不息。地势坤,君子以厚德载物。

天天过节的秋实大哥又要过节了,于是他要给心爱的妹子买礼物。但由于最近秋实大哥手头拮据,身为一个男人,他决定去打工!

秋实大哥来到一家广告公司。现在有n块矩形墙从左至右紧密排列,每一块高为Hi,宽为Wi。

公司要求秋实大哥找出一块最大的连续矩形区域,使得公司可以在上面贴出最大的海报。

Input

第一行包含一个整数n,表示矩形墙的个数。

接下来n行,每行有两个整数Wi,Hi,表示第i块墙的宽度和高度。

1≤n≤200000,保证Wi,Hi以及最后的答案<231。

Output

最大的连续矩形的面积。

Sample Input


3 4 
1 2 
3 4

Sample Output

14

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#include <set>
using namespace std;
typedef long long LL;
typedef unsigned long long Ull;
#define MM(a,b) memset(a,b,sizeof(a));
const double eps = 1e-10;
const int inf = 0x3f3f3f3f;
const double pi=acos(-1);
const int maxn=200000;
int w[maxn+10],h[maxn+10];
int l[maxn+10],r[maxn+10],x[maxn+10];

int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        MM(l,0);MM(r,0);MM(x,0);
        for(int i=1;i<=n;i++)
                scanf("%d %d",&w[i],&h[i]);
        x[1]=1;
        for(int i=2;i<=n+1;i++)
              x[i]=x[i-1]+w[i-1];//处理每个点的坐标
        stack<int> stl;
        for(int i=1;i<=n;i++)
        {
            while(stl.size()&&h[stl.top()]>=h[i]) stl.pop();
            l[i]=stl.size()==0?1:stl.top()+1;
            stl.push(i);
        }

        stack<int> str;
        for(int i=n;i>=1;i--)
        {
            while(str.size()&&h[i]<=h[str.top()]) str.pop();
            r[i]=str.size()==0?n+1:str.top();
            str.push(i);
        }

        int maxn=0;
        for(int i=1;i<=n;i++)
                maxn=max(maxn,(x[r[i]]-x[l[i]])*h[i]);
        printf("%d\n",maxn);
    }
    return 0;
}

  分析:裸的单调栈,需要处理好每个点的下标就好

时间: 2024-10-12 07:19:46

CDOJ 1069 秋实大哥去打工 单调栈 下标处理的相关文章

UESTC_秋实大哥去打工 2015 UESTC Training for Data Structures&lt;Problem G&gt;

G - 秋实大哥去打工 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 天行健,君子以自强不息.地势坤,君子以厚德载物. 天天过节的秋实大哥又要过节了,于是他要给心爱的妹子买礼物.但由于最近秋实大哥手头拮据,身为一个男人,他决定去打工! 秋实大哥来到一家广告公司.现在有n块矩形墙从左至右紧密排列,每一块高为Hi,宽为Wi. 公司要求秋实大哥找出一块最

CDOJ 1057 秋实大哥与花 线段树 区间更新+区间查询

链接: I - 秋实大哥与花 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit Status Practice UESTC 1057 Appoint description:  System Crawler  (2016-04-19) Description 秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前. 所以秋实大哥精心照料了很多花朵.现在所有的花朵排成了一行,每朵花有一

CDOJ 1146 A - 秋实大哥与连锁快餐店 最小生成树 Prim算法 稠密图

题目链接 A - 秋实大哥与连锁快餐店 Time Limit:3000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit Status Practice UESTC 1146 Appoint description:  System Crawler  (2016-05-01) Description 成大事者,不惟有超世之才,亦有坚忍不拔之志. 秋实大哥开了一家快餐店之后,由于人赢光环的影响,很快就赚得了大量的资金

CDOJ 1061 C - 秋实大哥与战争 STL set 迭代器

题目链接: C - 秋实大哥与战争 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit Status Practice UESTC 1061 Appoint description:  System Crawler  (2016-04-23) Description 男儿何不带吴钩,收取关山五十州. 征战天下是秋实大哥一生的梦想,所以今天他又在练习一个对战游戏. 秋实大哥命令所有士兵从

uestc 1073 秋实大哥与线段树 Label:线段树

秋实大哥与线段树 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) “学习本无底,前进莫徬徨.” 秋实大哥对一旁玩手机的学弟说道. 秋实大哥是一个爱学习的人,今天他刚刚学习了线段树这个数据结构. 为了检验自己的掌握程度,秋实大哥给自己出了一个题,同时邀请大家一起来作. 秋实大哥的题目要求你维护一个序列,支持两种操作:一种是修改某一个元素的值:一种是询问一段区间的和. Input

UESTC_秋实大哥掰手指 2015 UESTC Training for Dynamic Programming&lt;Problem B&gt;

B - 秋实大哥掰手指 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 2048/1024KB (Java/Others) Submit Status 秋实大哥发现数据结构专题出到了N题,但是他一时算不出来已经有了几道题,他就萌萌地掰手指数. 这个时候他发现,虽然人们根据手指数创造了十进制数,但是两只手同时能表达的数是0-10一共十一个数字. 这样,他觉得如果用手指表现十进制数,同一个十进制数就会有很多种不同的表现方法. 比如,11

UESTC_秋实大哥与快餐店 2015 UESTC Training for Data Structures&lt;Problem C&gt;

C - 秋实大哥与快餐店 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 朝为田舍郎,暮登天子堂.秋实大哥从小就怀抱有远大的理想,所以他开了一家快餐店. 秋实大哥根据菜的口感,给每一道菜一个唯一的CID,同时对于前来的客人,根据他们的口味喜好,秋实大哥会给每一个客人一个PID. 对于一个标号为PID的客人,他对标号为CID的菜的喜爱程度为PID∧CI

UESTC_秋实大哥打游戏 2015 UESTC Training for Data Structures&lt;Problem H&gt;

H - 秋实大哥打游戏 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status ”也许人生就是游戏,你却执意耕耘着春秋.” —— 秋实大哥叹道. 秋实大哥是一个喜欢玩游戏的人,相较于其他种类的游戏,秋实大哥更喜欢自由开放的沙盒游戏,尤其是minecraft. 现在,秋实大哥发现了N个独立的小岛(编号1,2,3.....N),于是他要把这些小岛连起来. 每一次

UESTC_秋实大哥与家 2015 UESTC Training for Data Structures&lt;Problem E&gt;

E - 秋实大哥与家 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 秋实大哥是一个顾家的男人,他认为人生就是旅途,不管我们漂到哪,最终还是会回到温暖的地方——家. 所以他买了很多家具. 秋实大哥的家可以看成一个W×H的矩阵,每一件家具可以看成一个矩形,他们放置在秋实大哥的家里,相互之间没有重叠. 现在秋实大哥购置了一个新的大小为1×M的家具,秋实大