小白月赛13 小A的柱状图 (单调栈)
链接:https://ac.nowcoder.com/acm/contest/549/H
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
输入描述:
一行一个整数N,表示长方形的个数
接下来一行N个整数表示每个长方形的宽度
接下来一行N个整数表示每个长方形的高度
输出描述:
一行一个整数,表示最大的矩形面积
备注:
1≤n≤1e6,1≤a[i]≤100,1≤h[i]≤1e91≤n≤1e6,1≤a[i]≤100,1≤h[i]≤1e9 解题思路:单调栈裸体,用两次单调栈求出对于每个小矩形的左右边界,遍历求出最大面积即可。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<string>
#include<set>
#include<cmath>
#include<list>
#include<deque>
#include<cstdlib>
#include<bitset>
#include<stack>
#include<map>
#include<cstdio>
#include<queue>
using namespace std;
typedef long long ll;
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define pushup() tree[rt]=tree[rt<<1]+tree[rt<<1|1]
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);
const double eps=1e-;
const ll mod=1e9+;
const int maxn=;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
const int dir[][]={{,},{-,},{,},{,-}};
const int MAXN=1e6+;
int n,m,ans;
stack<int> st;
ll h[MAXN];
int a[MAXN],l[MAXN],r[MAXN];
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%lld",&a[i]);
a[i]+=a[i-];
}
for(int i=;i<=n;i++)
scanf("%lld",&h[i]);
for(int i=;i<=n;i++){
while(st.size()&&h[st.top()]>=h[i])st.pop();
if(st.size()) l[i]=st.top();
else l[i]=;
st.push(i);
}
while(st.size())st.pop();
for(int i=n;i>=;i--){
while(st.size()&&h[st.top()]>=h[i])st.pop();
if(st.size())r[i]=st.top()-;
else r[i]=n;
st.push(i);
}
ll ans=;
for(int i=;i<=n;i++){
ll tmp=h[i]*(a[r[i]]-a[l[i]]);
if(tmp>ans)ans=tmp;
}
printf("%lld\n",ans);
return ;
}
小白月赛13 小A的柱状图 (单调栈)的更多相关文章
- 单调栈+前缀和 || Nowcoder || 牛客小白月赛13 || 小A的柱状图
题面:小A的柱状图 题解:无 代码: #include<cstdio> #include<cstring> #include<iostream> #define l ...
- 牛客小白月赛13 小A的柱状图(单调栈)
链接:https://ac.nowcoder.com/acm/contest/549/H来源:牛客网 题目描述 柱状图是有一些宽度相等的矩形下端对齐以后横向排列的图形,但是小A的柱状图却不是一个规范的 ...
- 小白月赛13 小A与小B (双向BFS)
链接:https://ac.nowcoder.com/acm/contest/549/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...
- 小白月赛13 小A的路径 (矩阵快速幂求距离为k的路径数)
链接:https://ac.nowcoder.com/acm/contest/549/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...
- 牛客小白月赛13 小A买彩票 (记忆化搜索)
链接:https://ac.nowcoder.com/acm/contest/549/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...
- 牛客小白月赛13 小A的回文串(Manacher)
链接:https://ac.nowcoder.com/acm/contest/549/B来源:牛客网 题目描述 小A非常喜欢回文串,当然我们都知道回文串这种情况是非常特殊的.所以小A只想知道给定的一个 ...
- 牛客小白月赛13 小A的最短路(lca+RMQ)
链接:https://ac.nowcoder.com/acm/contest/549/F来源:牛客网 题目描述 小A这次来到一个景区去旅游,景区里面有N个景点,景点之间有N-1条路径.小A从当前的一个 ...
- 洛谷10月月赛Round.1| P3400 仓鼠窝[单调栈]
题目描述 萌萌哒的Created equal是一只小仓鼠,小仓鼠自然有仓鼠窝啦. 仓鼠窝是一个由n*m个格子组成的行数为n.列数为m的矩阵.小仓鼠现在想要知道,这个矩阵中有多少个子矩阵!(实际上就是有 ...
- 小白月赛13 B小A的回文串 (马拉车算法求最长回文子串)
链接:https://ac.nowcoder.com/acm/contest/549/B来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...
随机推荐
- tablednd onDrap 方法不调用
场景 使用 tablednd 插件时,onDrap 方法不调用 解决 给tr标签加 id 属性
- layer.photos()异步修改图片地址后显示异常
项目中有一个图片有预览(用的layer.photos()),需要异步修改图片地址,但是成功修改后第一次预览会显示修改前的大图,第二次以后就都正常了. 尝试修改成功后再次调用layer.photos() ...
- 一起学Android之Layout
本文简述在Android开发中布局的简单应用,属于基础知识,仅供学习分享使用. 概述 在Android UI开发中,布局类型主要有两种:LinearLayout(线性布局)和RelativeLayou ...
- Unity 2D 效应器与来回移动的实现
1.效应器 Point Effector 2D: 点效应器.进入区域,吸引或排斥物体 Area Effector 2D: 区域效应器,可以用来做马里奥的管道移动效果 Surface Effector ...
- ORACLE复制表结构
一般网上的方法: ; --复制表结构以及数据按where条件查询出的数据 ; --只复制表结构 但是上面的语法不会复制旧表的默认值.注释.键和索引,因此想要完美的复制表结构就需要先找到旧表的sql语句 ...
- 记录Nginx代理的配置
server { listen 80; server_name localhost; location / { root /ect/share/nginx/html; index inde ...
- RESTful学习及应用
原文转自前端路上,转载请注明出处:http://refined-x.com/2017/09/22/RESTful学习及应用/ RESTful是什么 RESTful是一种API架构,符合REST设计原则 ...
- 既然CPU一次只能执行一个线程,那多线程存在的意义是什么?
今天看到了一篇文章,终于解除了一直的疑惑. 原文链接:https://www.cnblogs.com/qingbafengliuxia/p/10171638.html CPU的时间是按 ...
- mysql的进阶
老师的博客:http://www.cnblogs.com/wupeiqi/articles/5713323.html 总结 导出与导入 导出:mysqldump -u root -p 数据库 > ...
- 关于spring boot中 EmbeddedServletContainerCustomizer
EmbeddedServletContainerCustomizer这个在spring boot2.X的版本中就不再提供支持了貌似2.0版本还能用 ,用来提供对异常的处理.在支持EmbeddedSer ...