【CSP试题回顾】201312-3-最大的矩形

CSP-201312-3-最大的矩形

解题思路

1. 遍历所有可能的矩形高度:

  • 通过遍历所有矩形高度来找到最大的矩形,即对每个可能的高度 it(从直方图中的最小高度到最大高度 heightMax),代码将尝试找到在这个高度或以上的最长连续条形段。这是通过再次遍历直方图中的所有条形实现的,这次是为了测量每个可能高度下的最长连续段。

2. 计算给定高度下的最大长度:

  • 对于直方图中的每个高度 it
    1. 初始化 lengthMax(给定高度下的最大长度)为-1和 length(当前连续段的长度)为0。
    2. 然后遍历 heightArray,如果条形的高度大于或等于 itjt >= it),length 加一(表示这个高度的连续段增加)。
    3. 如果条形的高度小于 it(表示连续段结束),则比较并更新 lengthMax(如果当前连续段长度 length 大于之前记录的最大长度),并重置 length 为0以开始新的长度测量。

3. 更新最大矩形面积:

对于每个可能的高度 it,代码计算可能的最大矩形面积(it * lengthMax),如果这个面积大于之前记录的最大面积 sMax,则更新 sMax

完整代码

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;int main() {int n, heightMax = -1;cin >> n;long long sMax = 0; vector<int>heightArray(n); // 记录所有高度for (int i = 0; i < n; i++){cin >> heightArray[i];heightMax = max(heightMax, heightArray[i]); // 记录最大高度}heightArray.push_back(0); // 附终止条件for (const auto& it : heightArray) // 遍历所有高度{int lengthMax = -1, length = 0;// 找到高度i下的最大长度for (const auto& jt : heightArray) {if (jt >= it){length++;}else{lengthMax = max(length, lengthMax);length = 0; // 重置}}long long s = it * lengthMax;sMax = max(sMax, s);}cout << sMax;return 0;
}

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719842.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试相关介绍

什么是软件测试&#xff1f; 软件测试&#xff1a;使用技术手段验证软件是否满足使用需求 软件测试是指通过运行、评估和验证软件系统的过程&#xff0c;以确定其是否满足预期的需求和质量标准。它是软件开发生命周期中的一个重要环节&#xff0c;旨在发现和修复潜在的缺陷和…

前端错误 “TypeError Cannot read properties of undefined (reading ‘xxx‘)

前端错误 “TypeError: Cannot read properties of undefined (reading ‘xxx‘) 原因分析及解决 情况一&#xff1a; 出现该错误的原因是因为你花括号中的某些属性未定义。极大可能是因为你写错了属性名称 情况二&#xff1a; 异步请求获取数据时&#xff0c;语句可能写错&…

Linux操作系统——进程信号

1.信号的概念 生活当中哪些场景算信号呢&#xff1f;比如说你晚上调了个闹钟&#xff0c;然后第二天早上你听到了闹钟响了你就知道该起床了&#xff0c;这种机制就叫做信号机制。在生活中我们的信号是非常非常多的&#xff0c;比如说有&#xff1a;红绿灯&#xff0c;下课铃声…

Java中多线程的各种姿势

在Java中&#xff0c;多线程编程是一种强大的并发编程技术&#xff0c;可以让你同时执行多个任务。Java提供了多种方式来创建和管理线程。以下是Java中给多线程使用的一些主要方法&#xff1a; 继承Thread类&#xff1a; 创建一个新的类继承自Thread类。覆盖run()方法以定义线程…

爬虫案例一

首先我举一个案例比如豆瓣电影排行榜 (douban.com)这个电影&#xff0c;首先我们进去检查源代码 说明源代码有&#xff0c;说明是服务器渲染&#xff0c;可以直接那html 但是返回的结果是空&#xff0c;所以我们需要在头里面加上User-Agent 然后可以看到有返回的结果&#xff0…

Docker快速集成minio

拉取镜像&#xff08;默认最新的&#xff09; docker pull minio/minio创建配制和数据映射文件夹&#xff08;用于将容器内的配置和数据映射到本地&#xff09; 这边的路径可以修改成自己想要的文件夹 mkdir -p /data/minio/{config,data}启动容器 (这边启动容器要保证本地映…

什么是SpringCloud,有哪些组件?

spring Cloud 是基于spring boot的分布式系统开发工具,它提供了一系列开箱即用的,针对分布式系统开发的特性和组件。用于帮助开发人员快速构建和管理云原生应用程序。 Spring Cloud 的主要目标是解决分布式系统中的常见问题,例如服务发现,负载均衡,配置管理,断路器,消息总…

c++笔记—— AutoBuffer类(opencv)

自动分配缓冲区类 Automatically Allocated Buffer Class. 这个类用于函数和方法中的临时缓冲区。如果临时缓冲区通常很小&#xff08;几K的内存&#xff09;&#xff0c;但其大小取决于参数&#xff0c;则在堆栈上创建一个小的固定大小数组&#xff0c;并在足够大时使用它是有…

LabVIEW起重机工作参数远程监测系统

LabVIEW起重机工作参数远程监测系统 随着起重机技术的持续发展&#xff0c;对其工作参数的实时监控需求日益增加。设计了一个基于LabVIEW和TBox的起重机工作参数远程监测系统&#xff0c;能够实现起重机工作参数的实时采集、传输、解析和显示&#xff0c;有效提升起重机的性能…

python--开心篇--print--多种多样的print输出

文章目录 名言输出绕口令输出《水浒传》中的梁山好汉输出轨道交通充值信息输出对联字符画输出长春地铁1号线运行图模拟12306查询界面模拟企业网站登录界面 名言 print("& "*15) print("& &") print("& …

发现了一个超级好用的上网神器!但是不知道在哪里有卖······随身WiFi好评推荐,随身WiFi好用吗?

这两天到一个小地方出差&#xff0c; 走到一个奶茶店附近&#xff0c; 突然老板打电话说一个紧急文件需要我处理&#xff0c; 说实话有点崩溃&#xff0c; 前不着村后不着店的&#xff0c; 我去哪里找网络办公 辛亏奶茶店的小姐姐听到了&#xff0c; 让我在她店里&#x…

wy的leetcode刷题记录_Day81

wy的leetcode刷题记录_Day81 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间&#xff1a;2024-3-4 前言 目录 wy的leetcode刷题记录_Day81声明前言232. 用栈实现队列题目介绍思路代码收获 138. 随机链表的复制题目介绍思路代码收获 141. 环形链表题…

SUSE 配置防火墙策略

一.获取目前访问的接口 suse12sp3 # netstat -tunlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:8005 0.0.0.0:* …

【Bugs】class path resource [xxx.xml] cannot be opened because it does not exist

报错&#xff1a; 关键报错信息&#xff1a; class path resource [scope.xml] cannot be opened because it does not exist完整报错信息&#xff1a; 2024-03-01 14:26:58 866 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Refres…

Ubuntu的apt、apt-get和apt-cache命令

原文&#xff1a;apt 和 apt-get 之间有什么区别&#xff1f; https://aws.amazon.com/cn/compare/the-difference-between-apt-and-apt-get/ 陈拓转载&#xff0c;2023/11/23&#xff0c;添加了举例。 apt 和 apt-get 之间有什么区别&#xff1f; apt 和 apt-get 都是命令行…

【存储】without SPDK时,fio测试nvme SSD 和HDD对比

先看使用的io调度器是什么,SSD的话最好设置成none。 root@xxx-0010 ~ # cat /sys/block/nvme5n1/queue/scheduler [none] mq-deadline kyber使用fio对nvme SSD和普通HDD做对比测试: 1、 4K random write fio -filename=/data12/fiotest/testfile -direct=1 -iodepth=4 -th…

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(十五)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型&#xff0c;由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”&#xff08;そら sora&#xff09;&#xff0c;即天空之意&#xff0c;以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…

如何找到企查查天眼查上没有的企业联系方式?

相信很多销售在查找企业联系方式的过程中&#xff0c;遇到过很多问题。很多人在出入行的时候都使用过企查查&#xff0c;天眼查来查找客户。 但是在实际工作中使用这上面的联系方式&#xff0c;效果却不是很理想&#xff0c;因为上面的信息不是很准确&#xff0c;号码不是企业…

【嵌入式移植】8、U-Boot源码分析5—启动过程分析start.S

U-Boot源码分析5—启动过程分析start.S 1、boot0.h2、reset2.1、vectors2.2、ELn2.2.1 EL32.2.2、EL2、EL1 2.3、SMPEN2.3、core errate2.4、lowlevel_init 前面从U-Boot编译的角度分析了其Makefile、链接脚本等&#xff0c;本章开始正式分析U-Boot启动过程 从上一篇文章7、U-…

ClickHouse SQL Reference (四)数据类型

Tuple(T1, T2, …) 元素元组&#xff0c;每个元素都有一个单独的类型。元组必须至少包含一个元素。 元组用于临时列分组。在查询中使用IN表达式时&#xff0c;以及指定lambda函数的某些形式参数时&#xff0c;可以对列进行分组。有关更多信息&#xff0c;请参阅IN操作符和高阶…