博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2015 UESTC 数据结构专题G题 秋实大哥去打工 单调栈
阅读量:6326 次
发布时间:2019-06-22

本文共 2007 字,大约阅读时间需要 6 分钟。

秋实大哥去打工

Time Limit: 1 Sec  Memory Limit: 256 MB

题目连接

http://acm.uestc.edu.cn/#/contest/show/59

Description

天行健,君子以自强不息。地势坤,君子以厚德载物。
天天过节的秋实大哥又要过节了,于是他要给心爱的妹子买礼物。但由于最近秋实大哥手头拮据,身为一个男人,他决定去打工!
秋实大哥来到一家广告公司。现在有n块矩形墙从左至右紧密排列,每一块高为Hi,宽为Wi。
公司要求秋实大哥找出一块最大的连续矩形区域,使得公司可以在上面贴出最大的海报。

Input

第一行包含一个整数n,表示矩形墙的个数。
接下来n行,每行有两个整数Wi,Hi,表示第i块墙的宽度和高度。
1≤n≤200000,保证Wi,Hi以及最后的答案<231。

Output

最大的连续矩形的面积。

Sample Input

3
3 4
1 2
3 4

Sample Output

14

HINT

题意

题解:

初看这道题,啊好难啊
其实仔细思考一下很简单的
首先我们离散化一下下,然后我们再随便搞一搞
用两个单调栈维护以这个矩形为高最多往左和右延伸多少~
然后随便搞一搞就好了

代码:

 

//qscqesze#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef long long ll;using namespace std;//freopen("D.in","r",stdin);//freopen("D.out","w",stdout);#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)#define maxn 200001#define mod 10007#define eps 1e-9//const int inf=0x7fffffff; //无限大const int inf=0x3f3f3f3f;/*inline ll read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}int buf[10];inline void write(int i) { int p = 0;if(i == 0) p++; else while(i) {buf[p++] = i % 10;i /= 10;} for(int j = p-1; j >=0; j--) putchar('0' + buf[j]); printf("\n");}*///**************************************************************************************using namespace std;long long a[maxn],b[maxn],ans;int r[maxn],l[maxn];stack
s;int main(){ int n; scanf("%d",&n); a[0]=a[n+1]=-1; for(int i=1;i<=n;i++) { scanf("%d",&b[i]); b[i]+=b[i-1]; scanf("%lld",&a[i]); } s.push(0); int p=0; for(int i=1;i<=n;i++) { for(p=s.top();a[p]>=a[i];p=s.top()) s.pop(); l[i]=p+1; s.push(i); } while(!s.empty()) s.pop(); s.push(n+1); for(int i=n;i>0;i--) { for(p=s.top();a[p]>=a[i];p=s.top()) s.pop(); r[i]=p-1; s.push(i); } for(int i=1;i<=n;i++) ans=max(ans,((b[r[i]]-b[i-1])+(b[i-1]-b[l[i]-1]))*a[i]); printf("%lld\n",ans); return 0;}

 

转载地址:http://zcgaa.baihongyu.com/

你可能感兴趣的文章
shell脚本编程基础
查看>>
archlinux flash chromium lib path
查看>>
查询指定时间段的数据
查看>>
XenServer 优化
查看>>
mysql中 decimal、numeric数据类型
查看>>
Android 访问网络须知
查看>>
p1341 无序字母对
查看>>
loj10099 矿场搭建
查看>>
JQ 1
查看>>
简单用CreateThread传递自定义参数
查看>>
机器学习资源
查看>>
DJANGO 自定义分页组件
查看>>
【LeetCode每天一题】Convert Sorted Array to Binary Search Tree(根据有序数组构建平衡二叉树)...
查看>>
DES加密系统的实现
查看>>
使用MVC创建API
查看>>
CodeForces Round 521 div3
查看>>
Spring Boot 使用 AOP 实现页面自适应
查看>>
如何检测被锁住的Oracle存储过程及处理办法汇总(转)
查看>>
GString及IntelliJIdea中调试Groovy的操作步骤
查看>>
setInterval 传参数
查看>>