牛客小白月赛13 小A的柱状图(单调栈)
链接:https://ac.nowcoder.com/acm/contest/549/H
来源:牛客网
题目描述
输入描述:
一行一个整数N,表示长方形的个数
接下来一行N个整数表示每个长方形的宽度
接下来一行N个整数表示每个长方形的高度
输出描述:
一行一个整数,表示最大的矩形面积
备注:
1≤n≤1e6,1≤a[i]≤100,1≤h[i]≤1e9 解题思路:很明显是单调栈的模板题,找到某长方形最左边和最右边比它高度低的位置,然后求他们的总宽度,就可以求出总面积了。
单调栈简单实现过程:先找到最左边的位置l【i】,取某长方形的高度,将其与栈顶的长方形作比较,如果比栈顶的长方形高,那么l【i】=sta.top()(sta为栈);如果比它低,那么栈顶元素出栈,继续比较,如果栈空了,那么l【i】=0;
同理可求得最右边的位置r【i】。
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
typedef long long ll;
int w[maxn];
int h[maxn];
ll sumw[maxn];
stack<int> sta;
int l[maxn],r[maxn];
int main(){
int n;
scanf("%d",&n);
sumw[0]=0;
for(int i=1;i<=n;i++){
scanf("%d",&w[i]);
sumw[i]=sumw[i-1]+1ll*w[i];
}
for(int i=1;i<=n;i++){
scanf("%d",&h[i]);
}
for(int i=1;i<=n;i++){
while(!sta.empty()&&h[i]<=h[sta.top()]) sta.pop();
if(!sta.empty())l[i]=sta.top();
else l[i]=0;
sta.push(i);
}
while(!sta.empty())sta.pop();
for(int i=n;i>=1;i--){
while(!sta.empty()&&h[i]<=h[sta.top()])sta.pop();
if(!sta.empty())r[i]=sta.top()-1;
else r[i]=n;
sta.push(i);
}
ll ans=0;
for(int i=1;i<=n;i++){
ll tem=(sumw[r[i]]-sumw[l[i]])*h[i];
ans=max(ans,tem);
}
printf("%lld\n",ans);
return 0;
}
牛客小白月赛13 小A的柱状图(单调栈)的更多相关文章
- 单调栈+前缀和 || Nowcoder || 牛客小白月赛13 || 小A的柱状图
题面:小A的柱状图 题解:无 代码: #include<cstdio> #include<cstring> #include<iostream> #define l ...
- 牛客小白月赛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从当前的一个 ...
- 牛客小白月赛13 小A买彩票 (记忆化搜索)
链接:https://ac.nowcoder.com/acm/contest/549/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...
- 牛客小白月赛13-J小A的数学题 (莫比乌斯反演)
链接:https://ac.nowcoder.com/acm/contest/549/J来源:牛客网 题目描述 小A最近开始研究数论题了,这一次他随手写出来一个式子,∑ni=1∑mj=1gcd(i,j ...
- 小白月赛13 小A的柱状图 (单调栈)
链接:https://ac.nowcoder.com/acm/contest/549/H来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...
- 牛客小白月赛13 G(双向搜索)
AC通道 两边同步搜,一步里面A走一次B走两次,遇到对方走过的地方就得到了答案. #include <bits/stdc++.h> using namespace std; const i ...
- 牛客小白月赛13 E(图、矩阵幂)
AC通道 如果建立第一天某点到某点有几条路的矩阵,做k次矩阵乘就是第k天某点到某点有几条路.统计即可. #include <bits/stdc++.h> using namespace s ...
- 【牛客小白月赛21】NC201605 Bits
[牛客小白月赛21]NC201605 Bits 题目链接 题目描述 Nancy喜欢做游戏! 汉诺塔是一个神奇的游戏,神奇在哪里呢? 给出3根柱子,最开始时n个盘子按照大小被置于最左的柱子. 如果盘子数 ...
随机推荐
- submit提交判断
body部分 <form action='https://www.baidu.com' method='post' > 用 户 名:<input ...
- Python【每日一问】07
问:请解释使用 *args 和 **kwargs 的含义 答: *args:可变参数,表示将实参中按照位置传值,多余的值都给 args,多余的实参被打包成 tuple(元组),然后传递给函数调用 # ...
- JUnit报告美化——ExtentReports
美化后效果 美化后的报告,页面清晰简洁.重要信息都可以体现出来,用例通过率,失败的用例和失败原因 主要技术点 ExtentReports JUnit的@Rule 重写TestWatcher的succe ...
- 02 jmeter性能测试系列_JForum测试论坛的环境搭建
软件测试高端专家培训 QQ 讨论群498721021 网站http://www.szwpinfo.com 1.进入jforum的官方网站,地址http://jforum.net/,下载 2.放入到to ...
- 1.Java
面向对象:封装,继承,多态 A组合B:那么B就可以调用A中的方法 A关联B:A中的成员变量是用B声明的 A和B的依赖关系:A中某个方法的参数是B声明的对象或者返回值类型是B的数据类型 Static方法 ...
- mybatis入门篇:mybatis动态SQL
1.if用法 <select id="selectUser" resultType="com.forest.owl.entity.User"> se ...
- Object详解(转)
Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起.作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现. Object类位于ja ...
- 【Python学习】Python3 环境搭建
参考地址:http://www.runoob.com/python3/python3-install.html Python3 环境搭建 本章节我们将向大家介绍如何在本地搭建 Python3 开发环境 ...
- Android 开发 将window变暗
前言 在创建弹窗功能时,一般有需求将背景的window界面变暗.下面两组代码就实现了变暗与恢复的功能. 变暗 public void startDark(){ WindowManager.Layout ...
- java 连接SQL Server
1.确认服务器的连通性,并且使用账户密码模式登陆有效. 1).登陆服务器 2).查看安全性 2.新建数据库用于测试 3.下载jdbc安装并配置 进入微软官网主页--> 搜索JDBC-->找 ...