小A的柱状图
链接
[https://ac.nowcoder.com/acm/contest/549/H]
题意
[
]
分析
很显然你必须找到该高度下往左右找到第一个高度比该位置小的。这个区间的宽*该高度。就当前能取到的最多面积
后面就枚举每个高度,很多人用单调栈写了。由于数据水过了其实那是错误的做饭。
比如3
1 1 1
5 5 5
他们会得到0而不是15
我就前后递归找吧具体看代码
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e6+10;
ll h[N],pre[N],suf[N],sum[N];
//pre[i]表示该位置往前第一个小于h[i]的位置
//suf[i]就和pre相反的
int main(){
	int n; ll x;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%lld",&x); sum[i]=sum[i-1]+x;
	}
	for(int  i=1;i<=n;i++) scanf("%lld",&h[i]);
	for(int i=1;i<=n;i++){
		if(h[i-1]<h[i]) pre[i]=i-1;
		else{
			int t=pre[i-1];
			while(1){
				if(h[t]<h[i]){
					pre[i]=t; break;
				}
				t=pre[t];
			}
		}
	}
	for(int i=n;i>=1;i--){
		if(h[i+1]<h[i]) suf[i]=i+1;
		else{
			int t=suf[i+1];
			while(1){
				if(h[t]<h[i]) {
					suf[i]=t; break;
				}
				t=suf[t];
			}
		}
	}
	ll ans=0;
	for(int i=1;i<=n;i++)
		ans=max(ans,h[i]*(sum[suf[i]-1]-sum[pre[i]]));
	printf("%lld\n",ans);
	return 0;
}
小A的柱状图的更多相关文章
- 小白月赛13 小A的柱状图 (单调栈)
		链接:https://ac.nowcoder.com/acm/contest/549/H来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ... 
- 单调栈+前缀和 || Nowcoder || 牛客小白月赛13 || 小A的柱状图
		题面:小A的柱状图 题解:无 代码: #include<cstdio> #include<cstring> #include<iostream> #define l ... 
- 牛客小白月赛13  	小A的柱状图(单调栈)
		链接:https://ac.nowcoder.com/acm/contest/549/H来源:牛客网 题目描述 柱状图是有一些宽度相等的矩形下端对齐以后横向排列的图形,但是小A的柱状图却不是一个规范的 ... 
- newcoder 小A的柱状图(单调栈)题解
		题目描述 柱状图是有一些宽度相等的矩形下端对齐以后横向排列的图形,但是小A的柱状图却不是一个规范的柱状图,它的每个矩形下端的宽度可以是不相同的一些整数,分别为a[i] 每个矩形的高度是h[i] ,现在 ... 
- [单调栈]小A的柱状图
		链接:https://ac.nowcoder.com/acm/problem/23619来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ... 
- 小A的柱状图_via牛客网
		题目 链接:https://ac.nowcoder.com/acm/contest/28537/Q 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语 ... 
- 小任务之使用SVG画柱状图~
		function drawBar(data) { var barGraph = document.querySelector("#bar-graph"); var graphWid ... 
- WPF 自定义柱状图 BarChart
		WPF 自定义柱状图 当前的Telerik控件.DevExpress控件在图表控件方面做得不错,但是有时项目中需要特定的样式,不是只通过修改图表的模板和样式就能实现的. 或者说,通过修改当前的第三方控 ... 
- ChartControl 折线图  柱状图
		添加折线图(柱状图) 拖动ChartControl到Form上 在Series Collection中添加Line(或Bar) DevExpress.XtraCharts.Series series1 ... 
随机推荐
- ASP.NET Core Web API 集成测试中使用 Bearer Token
			在 ASP.NET Core Web API 集成测试一文中, 我介绍了ASP.NET Core Web API的集成测试. 在那里我使用了测试专用的Startup类, 里面的配置和开发时有一些区别, ... 
- .NET Core微服务之基于EasyNetQ使用RabbitMQ消息队列
			Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.消息队列与RabbitMQ 1.1 消息队列 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更 ... 
- Python爬虫入门教程 42-100 爬取儿歌多多APP数据-手机APP爬虫部分
			1. 儿歌多多APP简单分析 今天是手机APP数据爬取的第一篇案例博客,我找到了一个儿歌多多APP,没有加固,没有加壳,没有加密参数,对新手来说,比较友好,咱就拿它练练手,熟悉一下Fiddler和夜神 ... 
- 《前端之路》之 operator 操作符的优先级
			Github传送门,欢迎 Star - - Github地址,欢迎 Star 
- JavaScript夯实基础系列(三):this
			在JavaScript中,函数的每次调用都会拥有一个执行上下文,通过this关键字指向该上下文.函数中的代码在函数定义时不会执行,只有在函数被调用时才执行.函数调用的方式有四种:作为函数调用.作为 ... 
- C++ Sqlite3的基本使用
			|SQLite3简介 SQLite3只是一个轻型的嵌入式数据库引擎,占用资源非常低,处理速度比Mysql还快,专门用于移动设备上进行适量的数据存取,它只是一个文件,不需要服务器进程. SQL语句是S ... 
- Asp.Net Core 轻松学-实现跨平台的自定义Json数据包
			前言 在前后端分离的业务开发中,我们总是需要返回各种各样的数据包格式,一个良好的 json 格式数据包是我们一贯奉行的原则,下面就利用 Json.Net 来做一个简单具有跨平台的序列化数据包实 ... 
- SLAM+语音机器人DIY系列:(八)高阶拓展——1.miiboo机器人安卓手机APP开发
			android要与ROS通讯,一种是基于rosbridge,另一种是基于rosjava库. 相关参考例子工程 rosbridge例子: https://github.com/hibernate2011 ... 
- 浅谈JavaWeb架构演变
			一 JavaWeb架构演变 在java架构模式中,我们可以将MVC架构模式抽象为如下结构: 1.View层.View层即UI层,可采用的技术如JSP,Structs,SpringMVC等 2.Con ... 
- EF Core 快速上手——EF Core的三种主要关系类型
			系列文章 EF Core 快速上手--EF Core 入门 本节导航 三种数据库关系类型建模 Migration方式创建和习修改数据库 定义和创建应用DbContext 将复杂查询拆分为子查询 本 ... 
