//感觉有必要把这题放博客上待复习 刚刚写解题报告的时候发现自己又不会做这题了

//我不会告诉你这题绝对是命题人抄poj2559

这题使用一个单调递增的栈,栈内存储的元素有两个值,一个高度,一个长度。

假如后一个元素的高度比栈顶元素小,那么从栈顶元素一定无法延伸到当前元素,于是乎我们就弹栈来降低栈顶的元素的高度,即把栈顶的元素和下一个元素合并,合并后高度为两者的最小值,宽度为两者加和(其实这就相当于新产生了一种方案)。进行弹栈操作直到栈顶元素小于当前元素,然后当前元素进栈。

弹栈时记录新产生的栈的元素的面积(其实就是新方案的面积),取最大值即为答案。

#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<queue>
#include<vector>
#include<map>
#include<stack>
#include<string> using namespace std; struct rec{
int h,w;
}; int n;
rec a[];
rec stk[];
int top; int main(){
memset(a,,sizeof(a));
memset(stk,,sizeof(stk));
scanf("%d",&n);
for (int i=;i<=n;i++){
scanf("%d%d",&a[i].w,&a[i].h);
}
top=;
int ans=;
for (int i=;i<=n;i++){
int totw=;
while (top> && stk[top].h>a[i].h){
totw=totw+stk[top].w;
ans=max(ans,stk[top].h*totw);
top--;
}
top++;
stk[top].w=a[i].w+totw;
stk[top].h=a[i].h;
}
while (top>){
ans=max(ans,stk[top].h*stk[top].w);
stk[top-].w=stk[top-].w+stk[top].w;
top--;
}
printf("%d\n",ans);
}
/*
3
3 4
1 2
3 4 3
3 2
10 3
3 3 7
1 2
1 1
1 4
1 5
1 1
1 3
1 3
*/

uestc poj2559 秋实大哥去打工的更多相关文章

  1. 2015 UESTC 数据结构专题G题 秋实大哥去打工 单调栈

    秋实大哥去打工 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Descr ...

  2. UESTC_秋实大哥去打工 2015 UESTC Training for Data Structures<Problem G>

    G - 秋实大哥去打工 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Subm ...

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

    E - 秋实大哥去打工 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit St ...

  4. UESTC 1059 - 秋实大哥与小朋友

    题目链接:http://acm.uestc.edu.cn/#/problem/show/1059 Time Limit: 3000/1000MS (Java/Others)     Memory Li ...

  5. UESTC 1061 秋实大哥与战争 线段树区间合并

    秋实大哥与战争 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 男儿何不带吴钩, ...

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

    秋实大哥与线段树 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) “学习本无底, ...

  7. UESTC 1074 秋实大哥搞算数 栈模拟

    秋实大哥搞算数 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit S ...

  8. UESTC - 1057 秋实大哥与花 线段树

    题意 秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前. 所以秋实大哥精心照料了很多花朵.现在所有的花朵排成了一行,每朵花有一个愉悦值. 秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉 ...

  9. UESTC - 1057 秋实大哥与花 线段树模板题

    http://acm.uestc.edu.cn/#/problem/show/1057 题意:给你n个数,q次操作,每次在l,r上加上x并输出此区间的sum 题解:线段树模板, #define _CR ...

随机推荐

  1. c++ 06

    一.下标操作符 A a (...); cout << a[3] << endl; cout << a.operator[] (3) << endl; c ...

  2. poj 2411 Mondriaan's Dream_状态压缩dp

    题意:给我们1*2的骨牌,问我们一个n*m的棋盘有多少种放满的方案. 思路: 状态压缩不懂看,http://blog.csdn.net/neng18/article/details/18425765 ...

  3. win环境下mysql5.6.14的所有变量的默认值

    在windows mysql5.6.14 x64版本下my.ini如下: [mysqld] port  = 3306 socket  = /tmp/mysql.sock basedir=D:/wamp ...

  4. 如何在cmd窗口启动Tomcat

    平时,一般使用tomcat/bin/startup.bat目录在windows环境启动Tomcat,或者使用IDE配置后启动. 下面来简单介绍下如果在cmd窗口直接输入命令启动Tomcat: 1.将t ...

  5. Android项目svn代码管理问题

    用svn控制版本,svn本身是不会识别哪些该传,哪些不该传,这就导致有些关于路径的东西(比如拓展jar的路径)也被上传了,而当别人下载后,那个路径对于这个人可能完全不存在,项目编译就会出问题.用ecl ...

  6. (转载)js获取JqueryString方法小结

    一.<script>urlinfo=window.location.href; //获取当前页面的urllen=urlinfo.length;//获取url的长度offset=urlinf ...

  7. C#使用DirectoryEntry操作IIS创建网站和虚拟路径

    原文:http://www.cnblogs.com/Aiooioo/archive/2011/05/30/cs-iis.html 在.Net中我们可以使用内置的类DirectoryEntry来承载II ...

  8. Android中Binder的基础知识点

    Android Binder基础知识点 一 传统IPC和Binder机制的比较 传统IPC: 1)收方无法获得对方进程可靠的UID/PID,从而无法鉴别对方身份. 2)接入点开放,无法建立私有通道. ...

  9. Linux串口编程のtermios 结构

    termios 结构是在POSIX规范中定义的标准接口,它类似于系统V中的termio接口,通过设置termios类型的数据结构中的值和使用一小 组函数调用,你就可以对终端接口进行控制. 可以被调整来 ...

  10. Spring MVC中数据绑定(转)

    Spring MVC中数据绑定 比如Product有一个createTime属性,是java.util.Date类型.那么最简单的转型处理是,在SimpleFormController中覆盖initB ...