CSP认证刷题笔记(3)最大矩形(13年CSP认证第三题)

文章目录

    • 题目描述
    • 基本思路
    • 求解代码

题目描述

  • 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1≤i≤n)个矩形的高度是 hi
  • 这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3,1,6,5,2,3。
    在这里插入图片描述
  • 请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。
  • 对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是10。
    在这里插入图片描述
  • 输入格式
    • 第一行包含一个整数n,即矩形的数量。
    • 第二行包含n个整数 h1,h2,…,hn,相邻的数之间由空格分隔。hi是第 i个矩形的高度。
  • 输出格式: 输出一行,包含一个整数,即给定直方图内的最大矩形的面积。

基本思路

通过题目的描述可知,最大矩形的高度一定是某个直方的高度,其宽度是该直方两边高度小于等于该直方的直方数量(包括该直方自己)。因此,可以通过枚举的方式来实现。

求解代码

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

int n;
const int N = 1010;
int h[N];
int max_area = 0;

inline int find_min(int start_pos,int rectangle_count)
{
    int min = h[start_pos];
    int end_pos = start_pos + rectangle_count;
    for(int i(start_pos + 1);i < end_pos; ++i)
    {
        if(h[i]<min)
        {
            min = h[i];
        }
    }
    return min;
}

int main(void)
{
    cin >> n;
    for(int i(0);i<n;++i)
    {
        cin >> h[i];
    }
    
    for(int rectangle_count(1);rectangle_count <= n;++rectangle_count)
    {
        int end_pos = n - rectangle_count + 1;
        for(int start_pos(0);start_pos < end_pos;++start_pos)
        {
            int area = find_min(start_pos,rectangle_count) * rectangle_count;
            if(area > max_area)
            {
                max_area = area;
            }
        }
    }
    cout << max_area << endl;
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【面试干货】一个数组的倒序

【面试干货】一个数组的倒序 1、实现思想2、代码实现 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、实现思想 创建一个新的数组&#xff0c;然后将原数组的元素按相反的顺序复制到新数组中。 2、代码实现 package csdn;public class…

Go语言不再难!跟随ChatGPT轻松攻克编程难关

开发人员&#xff08;包括我在内&#xff09;通常偏好边学习边实践的方式。这不仅仅是我与LLM协作的核心准则之一&#xff0c;也是最关键的准则&#xff1a;因为你是在任务导向的学习过程中积累知识&#xff0c;这种学习方式不是预先的——它基于实时的、可感知的情境。 当资深…

管道光电液位传感器有哪些特点

管道光电液位传感器具有多项独特特点&#xff0c;使其在水管缺水检测领域广受欢迎。管道光电液位传感器采用光学感应原理&#xff0c;利用光线在水与空气中的折射率不同来感知水位的变化。这种原理使得传感器无需任何机械运动&#xff0c;大大延长了其寿命&#xff0c;并且不易…

连绕下线和掏把下线

这里的连绕下线和掏把下线讲的是线不剪断的接法&#xff01; 这里还是以一路串联为例子&#xff0c;一相4组线圈 &#xff0c;4组线圈就需要3根套管&#xff0c;3相就需要9根套管 如下图 绕这一相4组线圈的时候&#xff0c;就已经放好一定大小的3根套管&#xff01; 这个只试…

计算机网络学习记录 数据链路层 Day3 (上)

计算机网络学习记录 数据链路层 Day3&#xff08;上&#xff09; 你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner gitee https://gitee.com/Qiuner 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1…

【手势识别-UISwipeGestureRecognizer轻扫 Objective-C语言】

一、接下来,我们来说这个,轻扫的手势, 1.轻扫,比如说,就是从右往左滑一下,从左往右滑一下,这个叫轻扫,不是清洁的清啊,是轻轻的轻,不是那个清扫垃圾的清啊,好,这是轻扫啊,swipe, 好,然后呢,在这个里边呢,首先,3步,也是一样的, 1)创建手势对象 2)为哪一…

香港身份|香港优才计划2024申请条件是什么?一文梳理流程、打分、政策、续签指南!

香港优才计划2024申请条件是什么&#xff1f;一文梳理流程、打分、政策、续签指南&#xff01; 一个香港身份可以为申请人家庭带来教育、税务、医疗、通行自由等一系列优势。但申请香港优才并不轻松&#xff0c;因此总结了过来人经验分享这篇攻略&#xff0c;讲讲香港优才申请…

基于DEXPI标准的xml转成svg图片的测试

通过对java代码的一顿反编译&#xff0c;这个功能逐渐实现了。也打了日志&#xff0c;通过编码实现了svg的视图的裁剪大小。选择xml文件然后选择文件夹&#xff0c;程序自动进行转换&#xff0c;最后生成svg文件。 最后的xml转换后的成品如下图&#xff1a; 通过与达美盛的工具…

PWM 什么是PWM?

1. 什么是PWM&#xff1f; PWM是Pulse Width Modulation的缩写&#xff0c;中文是脉冲宽度调制。 是利用微处理器的数字输出来对模拟电路进行控制的一种技术。 2. 面积等效原理 2.1. 什么是面积等效原理&#xff1f; 冲量相等而形状不同的窄脉冲施加在惯性环节上时&#xf…

Qwen学习笔记4:Qwen 7B模型调用天气API实现天气的即时查询

前言 在学习Qwen模型的函数调用功能后&#xff0c;进一步尝试利用本地的Qwen模型访问OpenWeather API来获取实时的天气情况。 参考代码来源于视频教程&#xff1a; 简单粗暴&#xff0c;轻松配置Qwen模型查询实时数据功能_哔哩哔哩_bilibili 说明 该代码运行前&#xff0c…

蓝桥杯-线性动态规划问题背包问题进阶策略详解-青蛙吃虫

题目&#xff1a;蓝桥云课-青蛙吃虫 解题代码&#xff1a; #include <iostream> #include<cstring> #include<algorithm> using namespace std;const int N106;int f[N][N]; int a[N]; int t,l,r,k,n;int main() {cin>>t;while(t--){scanf("%d%…

入职java开发第一天,不会VUE竟然被.........

Vue2 技术栈 第 1 章&#xff1a;Vue 核心1.1. Vue 简介1.1.1. 官网1.1.2. 介绍与描述1.1.3. Vue 的特点1.1.4. 与其它 JS 框架的关联1.1.5. Vue 周边库 1.2. 初识 Vue1.3. 模板语法1.3.1. 效果1.3.2. 模板的理解1.3.3. 插值语法1.3.4. 指令语法 1.4. 数据绑定1.4.1. 效果1.4.2…

Java官网下载JDK17版本详细教程(下载、安装、环境变量配置)

第一步&#xff0c;去百度搜索甲骨文官网 第二步 第三步 第四步 第五步 第六步 第七步 第八步 第九步 第十步 然后在系统变量里面找到path-编辑-新建添加这个,点击确定就好了 %JAVA_HOME%\bin 就完成了&#xff0c;接下来测试是否成功。 测试&#xff1a; 第一步&a…

Vue3学习笔记 - 禹神YYDS

1. 教程介绍 https://www.bilibili.com/video/BV1Za4y1r7KE?p1 本篇vue3&#xff0c;内容比较新&#xff0c;比如有setup语法糖用法&#xff1b;只是他使用TS&#xff0c;并不是JS&#xff1b;不过JS也比较熟悉了&#xff0c;也可以学习下TS的语法&#xff0c;课程使用 TypeSc…

Clickhouse

概念 来源 ClickHouse背后的研发团队是俄罗斯的Yandex公司。Yandex是一家俄罗斯的搜索引擎公司&#xff0c;类似于我国的百度&#xff0c;Yandex于2011年在纳斯达克上市。 架构演变 特点 Clickhouse使用的是列式存储 图中第二个使用的列式存储在提取某一部分的全部数据时&a…

KING大咖直播 | KES RAC如何成为核心系统首选?

核心系统负载高 停机代价大 KES RAC来了 KingbaseES共享存储集群 不仅满足您对数据库 扩展性与可用性的严苛要求 更能在保障性能的同时 实现低成本、高效益 是企业核心系统的理想选择 5月16日19:30-20:30 锁定金仓数据库视频号 人大金仓高级研发工程师 深度揭秘如何实现 Kingba…

PXE+Kickstart无人值守安装操作系统

文章目录 什么是PXE&#xff1f;PXE工作原理示意图说明一、环境二、安装前准备三、DHCP服务器配置四、TFTP服务准备五、VSftpd服务准备六、PXE菜单七、重启服务八、创建虚拟机-自动安装系统 什么是PXE&#xff1f; PXE&#xff0c;全名Pre-boot Execution Environment&#xf…

接口自动化框架篇:接口框架中的常归断言封装!

在接口自动化测试中&#xff0c;断言&#xff08;Assertion&#xff09;是非常重要的一部分。通过对接口的返回结果进行断言&#xff0c;我们可以确认接口是否返回了正确的数据&#xff0c;从而验证接口的正确性。 为了提高代码的可读性和可维护性&#xff0c;我们通常会将常用…

前沿动态 | 关于AI大模型,你知道多少?

AI大模型含义 AI 大模型是人工智能预训练大模型的简称&#xff0c;包含了“预训练”和“大模型”两层含义&#xff0c;二者结合产生了新的人工智能模式&#xff0c;即模型在大规模数据集上完成预训练后&#xff0c;仅需少量数据的微调甚至无需微调&#xff0c;就能直接支撑各类…

python高级爱心代码

python高级爱心代码实现&#xff1a; import turtle import random # 设置画布 screen turtle.Screen() screen.bgcolor("black") # 创建画笔 pen turtle.Turtle() pen.speed(0) pen.color("red") pen.penup() # 移动画笔到起始位置 pen.goto(0, -20…