HDU 1506 Largest Rectangle in a Histogram

四足机器人——机械结构 目录 一、四足机器人腿型: 1、并联腿 2、串联腿 3、 腿的布局(关节配置) 二、四足机器人足端设计: 三、四足机器人膝关节驱动: 1、皮带轮驱动: 2、四连杆或者推杆驱动 四、四足机器人机械整体结构设计细节 一、四足机器人腿型: 1、并联腿 优点:受力角度来说,并联腿比串联腿好,并联腿较为灵活。 2、串联腿 优点:运动范围大 3、 腿的布局(关节配置) 为了使机器人具有较好的稳定性,一般会采用比较低的重心。这就导致了机器人腿的髋关节位置需要位于机器人身体的两侧.. 阅读详情

传送门

直方图dp。(我自己起的名字)
可以想到最后答案的形状一定可以是某个完整的柱形以自己完整的高度往左右扩散而得到的,扩散到什么地步呢?往左扩散到第一个小于自己高度的地方(从当前往左数),往右也扩散到第一个小于自己高度的地方(从当前往右数)。也就是说,中间这个完整的柱形一定是整个矩形的最低点(木板效应)。
(最后答案可能只包括自己柱形的一部分(比如11211),但在最后答案中一定可以找到某一个柱形被完整包含)

所以这N个柱形,每一个柱形都对应一个这样的基于自身的最大矩形。那么最终答案一定在这N个最大矩形之中。

那么问题就是怎么求每个柱形的最大矩形,其实只要从这个柱形的下标出发,分别往左右找第一个小于它高度的柱形,再记录下标就ok了。往左往右是同样的原理,我们只用分析一种即可。

  1. 那么怎么找往左的第一个小于自己的下标呢?(实际是记录这个下标的后一个,作为l[i]),最简单的方法是从当前下标开始往左依次循环判断。
  2. 但是我们可以利用l[i-1]来加速这个过程。前一个柱形h[i-1]和当前柱形h[i]的关系只有两种,如果h[i-1]<h[i],那么直接就判断出来了。
  3. 如果h[i-1]>=h[i],那么我们可以跳过从i-1到l[i-1]这些柱形,直接去判断h[l[i-1]-1]与h[i]的关系。

以上加速过程建立在先前的值都已计算过的基础上,所以第一层循环从左往右,第二层循环从当前往左(这个东西是跳着找的,一段一段地跨越,充分利用历史信息)。

最后,这个题的高度上限给的很大(1e9),和底边乘起来会溢出的,需要转为__int64类型,输出用%I64d。查了一下才发现C++的64位整数的定义很乱,反正记住这三对应该可以应付各种环境了。
(1.long long,%lld 2.long long,%I64d 3.__int64,%I64d,参考资料)


#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
#include <queue>
using namespace std;                               // 直方图dp

const int MAXN = 1e5;
int N;
int h[MAXN];
int l[MAXN], r[MAXN];

void init(){}

int main()
{
	int t;
	for (; ~scanf("%d", &N);)
	{
		if (N == 0) break;
		init();
		for (int i = 0; i < N; i++) 
			scanf("%d", &h[i]);

		l[0] = 0;
		for (int i = 1; i < N; i++)
		{
			for (t = i; t - 1 >= 0 && h[t - 1] >= h[i]; t = l[t - 1]);
			l[i] = t;
		}

		r[N - 1] = N - 1;
		for (int i = N - 2; i >= 0; i--)
		{
			for (t = i; t + 1 < N && h[t + 1] >= h[i]; t = r[t + 1]);
			r[i] = t;
		}

		__int64 ans = -1;
		for (int i = 0; i < N; i++)
			ans = max(ans, ((__int64)h[i] * (__int64)(r[i] - l[i] + 1)));   // 哈哈哈 64的类型转换不能等他俩乘完了再转,乘完都溢出了
		printf("%I64d\n", ans);
	}

	return 0;
}
反无人机作战体系全解析:从低慢小探测到分层拦截 随着小型无人机在军事和民用领域的广泛使用,低慢小目标探测与拦截成为低空安全的核心挑战。传统防空体系面对成本低廉、飞行高度低、雷达特征小的无人机集群时,暴露出探测难、识别难、处置成本失衡等问题。为应对威胁,反无人机体系采用分层闭环设计,融合雷达、光电、声学与无线电侦测实现多源感知,通过电子战软杀伤与导弹、高炮、激光等硬杀伤手段协同配合,并借助自动化指控系统缩短“传感器到射手”的响应时延。该体系既可支撑战场要地防护,也能为民用低空安防提供参考。围绕分层反制逻辑,梳理探测、软硬杀伤、指控布防及实战短板,提供理解反 阅读详情

相关推荐

【5G】5G 核心网(5GC)基本架构

本文旨在科普5G核心网相关知识...

Learning makes me happy (0^◇^0) 4万+

HDU - 1506 Largest Rectangle in a Histogram

题目 HDU - 1506 Largest Rectangle in a Histogram 做法 以\(a_i\)为最高高度,以\(i\)向左右扩展 找到\(i\)左边比\(a_i\)小的最右边的位置 找到\(i\)有边比\(a_i\)小的最左边的位置 然而十天后又忘了,来补下笔记: 这里单调栈维护的是一个从顶到底递减的,当栈顶更大显然现在在的这个位置更优那就弹出栈顶 简直是单调栈的模板题 My...

weixin_30843605的博客 93

嵌入式开发:用状态机实现STM32按键消抖,告别阻塞延时

在嵌入式系统开发中,处理异步事件和实时响应是核心挑战。状态机作为一种强大的编程模型,通过定义有限的状态、事件和状态转换规则,将复杂的、非线性的控制逻辑转化为清晰、确定且易于维护的代码结构。其技术价值在于实现逻辑的模块化、异步化和非阻塞化,能显著提升代码的可读性、可扩展性和系统实时性。这一思想广泛应用于协议解析、用户界面交互、传感器数据处理等场景。本文以嵌入式开发中基础的按键处理为例,针对传统“延时消抖”方法会阻塞主循环、影响实时性的痛点,深入讲解如何运用状态机思维重构按键消抖逻辑。通过分析状态机的核心三要素

weixin_33377602的博客 339

HDU 1506 Largest Rectangle in a Histogram【单调栈/单调队列】

HDU 1506 Largest Rectangle in a Histogram 题意: 给出一个长度为n的序列,这些序列代表每个宽度为1的矩形的高,矩形是按顺序连在一起的,问最大相连面积(高为相连矩形的最小)。 思路: 对于每个最大连续的矩阵区间,如果它的边界有比这个区间最矮的矩形高的矩形,那么高的矩形肯定会被合并进去的。即找到每个节点的从左(从右)第一个比它小的节点, 这样就是当前节点能构成...

nefu_ljw的博客 322

Win10系统内存占用异常飙升?三步排查法快速定位问题根源

本文针对Win10系统内存占用异常飙升问题,提供了一套三步排查法。首先利用任务管理器和资源监视器进行深度系统体检,定位隐形内存消耗者;其次通过干净启动和禁用非必要后台服务,揪出导致内存泄漏的第三方软件或驱动;最后进行终极深度清理,包括检查内存完整性、调整虚拟内存设置以及更新关键驱动程序,帮助用户快速恢复系统流畅运行。

weixin_29251567的博客 195

八、ILI2511 初版调试

8.1 TP成品过程 TP厂在制造TP过程中会经过FPC、FOG和Model三个阶段。 FPC: 将IC做在FPC上面; FOG: 将FPC与sensor 绑定; Model:FOG阶段后,贴上CG(cover glass)。 经过上面三个阶段后,将会拿到没有烧录固件的TP模组。这个时候触摸TP,并不能上报触摸数据,需要对TP模组烧录固件(执行程序)后才会有TP有触摸数据。 8.2 源码编译固件与工具生成固件 我们可以通过以下两种方式获得固件 1)由奕力原厂直接通过源码,进行编...

qq_34343637的博客 3688

HDU 1506 Largest Rectangle in a Histogram(dp)

题目链接:HDU 1506 Largest Rectangle in a Histogram 对于每一块木板,Area=height[i]*(j-k+1) 设其中任一块x, j=height[i]; 找j,k成为关键。 利用动态规划,如果它左边高度大于等于它本身,那么它左边的左边界一定满足这个性质,再从这个边界的左边迭代下去。左边界迭代完再迭代右边界。 在杭电提交了好多次都是TLE,

fobdddf的专栏 502

2026年数字IC设计华为笔试带答案解析

这篇文章是一份数字IC设计工程师笔试的试卷结构和部分题目解析。试卷包含单选题31题(每题2分)、多选题10题(每题4分)和简答/编程题4题(每题7分),总分130分,考试时长120分钟。 摘要重点: 试卷涵盖数字IC设计的关键知识点,包括Verilog语法、时序逻辑、状态机设计、跨时钟域处理等; 题目解析详细说明了各选项的正确性,如非阻塞赋值特性(D错误)、功耗影响因素(C与组合逻辑级数弱相关)等; 包含实际工程问题,如DDR4接口电平(SSTL-1.2)、卡诺图变量排序(格雷码)等; 部分题目考察基础概念

Open 369

hdu1506 Largest Rectangle in a Histogram

Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6301    Accepted Submission(s): 1803 Problem Descriptio

Shirley 3113

Response Instance 详解:在 ABAP OData Client Proxy 中读懂每一次响应

ABAP OData Client Proxy中的Response Instance是关键信息载体,封装了业务数据及调用上下文(如分页、delta link等)。响应实例在执行请求后自动生成,根据请求类型返回特定接口(如READ返回/IWBEP/IF_CP_RESPONSE_READ)。响应抽象与OData版本解耦,支持统一处理V2/V4服务。常见响应类型包括单实体读取、列表读取(支持分页和增量同步)、创建/更新/删除响应等。开发时可通过响应对象的安全类型方法获取数据,如get_business_data获

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 136

CTK Plugin Framework插件框架学习1--Qt编译CTK

【代码】Qt编译CTK。

贝勒里恩的博客 7432

HDU1506Largest Rectangle in a Histogram

Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 27901Accepted Submission(s): 9025 Problem Description ...

qq_43813140的博客 345

【INMP441】 MEMS麦克风,让硬件“听得见”,更要“听得清”

INMP441是一款数字MEMS麦克风,采用PDM接口输出高质量数字音频信号。相比传统模拟麦克风,它具有高度集成、抗干扰强、功耗低等优势,支持通过时钟启停实现软件控制开关。该麦克风体积小巧但功能强大,内置MEMS传感器、ADC转换器等模块,适合智能音箱、语音遥控等应用。工程师可通过ESP32等主控芯片轻松连接INMP441,利用多麦克风阵列实现波束成形等高级功能。INMP441展现了数字音频采集的先进技术,为创客和智能硬件开发者提供了优秀的音频解决方案。

深耕CV 1536

hdu1506 Largest Rectangle in a Histogram

Problem Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have different heights. For example, ...

baizhen6460的博客 225

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

hdu 1506 Largest Rectangle in a Histogram [好题]

这道题目看似很容易,找到比当前边i长的边且位于整个数组的最左边,存储在l[i],同理比当前边长且位于最右边的存储在r[i],于是我照做了,果断TL。。。所以需要优化,这道题目有点像并查集,如果当前边i比左边的边i-1短,那么就可以把左边边的l[i-1]赋给它,其实就是这样一个思路。学到了!这题真棒! 题目链接:https://vjudge.net/problem/HDU-1506 #inclu

算法虐我千百遍 446

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

HDU 1506 Largest Rectangle in a Histogram(DP)

可以发现 当第i-1个比第i个高的时候 比第i-1个高的所有也一定比第i个高 于是可以用到动态规划的思想 令left[i]表示包括i在内比i高的连续序列中最左边一个的编号 right[i]为最右边一个的编号 那么有 当h[left[i]-1]>=h[i]]时 left[i]=left[left[i]-1] 从前往后可以递推出left[i] 同理 当h[right[i]+1]>=h[i]]时 right[i]=right[right[i]+1] 从后往前可递推

Good morning,good afternoon and good night 1842

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

HDU 1506 Largest Rectangle in a Histogram(笛卡尔树)

题目传送门 解题思路: 来来来,笛卡尔树了解一下 代码1:(非要用结构体版) #include<bits/stdc++.h> using namespace std; #define ll long long #define for1(i,a,b) for (int i=a;i<=b;i++) #define for0(i,a,b) for (int i=a;i&l...

shadiao.的博客 280

HDU-1506.Largest Rectangle in a Histogram

地址:http://acm.hdu.edu.cn/showproblem.php?pid=1506 思路:并查集 || 单调栈 思路一、并查集:首先对数组以b[]={值,下标}结构按照从小到大排序,然后从大的开始处理,对于b[i]={val,id}, 比较其id位置左右相邻的值是否大于等于val,若大于等于则将其合并成一个集合,同时记录其集合中元素的个数s,那么当前元素的最大值为 val*s,res取所有元素的最大值即可。 思路二、单调栈:遍历数组,维护单调递增栈,对于当前元素x,其左边元素x0,当x0&.

随风而行的博客 298

HDU1506 Largest Rectangle in a Histogram

单调栈

a free man 593

Largest Rectangle in a Histogram HDU - 1506

题目描述】: 地面上从左到右并排紧挨着摆放多个矩形,已知这此矩形的底边宽度都为1,高度不完全相等。求在这些矩形包括的范围内能得到的面积最大的矩形,打印出该面积。所求矩形可以横跨多个矩形,但不能超出原有矩形所确定的范围。 如 n = 7, 序列为2 1 4 5 1 3 3 最大面积:8 【输入描述】: 输入有多组数据,每组数据一行: 第一个数N,表示矩形个数 后面跟N个正整数,第i个正整数hi表示...

peng1418975997的博客 224

HDU 1506 Largest Rectangle in a Histogram

A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have different heights. For example, the figure on the left shows ...

~ 381

HDU 1506:Largest Rectangle in a Histogram

点击打开题目链接题目给出一系列宽度为1,高度不定的矩形,希望求出这篇区域中的一个最大矩形的面积。如果数据比较小,可以用最大子矩阵写,把没有矩形的地方方格值是0,有矩形的地方方格值是1。然后求个最大子矩阵。但是题目n很大,矩形高度更大。则考虑模拟。对于一个矩形,维护两个量,其左侧大于等于它高度的最远的一个矩形的位置记为l[i].其右侧大于等于它高度的最远的一个矩形的位置记为r[i],则他是l[i]~...

温姑娘的博客 282

Largest Rectangle in a Histogram(HDU-1506)

Problem Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have different heights. For example, the fig...

Alex_McAvoy的博客 419
上一篇: HDU 1003 Max Sum
下一篇: CCF CSP 201312 3.最大的矩形
Crossing over
博客等级 码龄10年 6粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值