「蓝桥杯」积木大赛

news/2025/3/26 13:35:06/

积木大赛

题目描述

春春幼儿园举办了一年一度的"积木大赛"。今年比赛的内容是搭建一座宽度为 n 的大厦,大厦可以看成由 n 块宽度为 1 的积木组成,第 i 块积木的最终高度需要是 h_i 。

在搭建开始之前,没有任何积木(可以看成 n 块高度为 0 的积木)。接下来每次操作,小朋友们可以选择一段连续区间 [L,R],然后将第 L 块到第 R 块之间(含第 L 块和第 R 块)所有积木的高度分别增加 1。

小 M 是个聪明的小朋友,她很快想出了建造大厦的最佳策略,使得建造所需的操作次数最少。但她不是一个勤于动手的孩子,所以想请你帮忙实现这个策略,并求出最少的操作次数。

输入描述

输入包含两行,第一行包含一个整数 n ,表示大厦的宽度。

第二行包含 n 个整数,第 i 个整数为 h_i。

保证 1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^5 1n105 0 ≤ h i ≤ 1 0 4 0 \leq hi \leq 10^4 0hi104

输出描述

输出仅一行,即建造所需的最少操作数。

样例

#1

5
2 3 4 1 2
5

提示

解析

1647349502732

缩小范围,观察两栋楼,例如前两栋,若第 i 个柱子大于第 i - 1 个柱子,则表示第 i - 1 栋楼盖楼时已经把第 i 栋给一起联动覆盖了,因此第 i 栋只需要盖 A[i] - A[i - 1] 层就够了。

我们可以构建前缀差数组: [ 2 , 1 , 1 , − 3 , 1 ] [2, 1, 1, -3, 1] [2,1,1,3,1] 将非零的数值累加起来即可。

AC Code

public static void main(String[] args) throws Exception {int n = nextInt();int[] A = new int[100005];int[] B = new int[100005];int ans = 0;for(int i = 1; i <= n; i++) A[i] = nextInt();for(int i = 1; i <= n; i++) {B[i] = A[i] - A[i - 1];if(B[i] > 0) ans += B[i];}System.out.println(ans);
}
public static void main(String[] args) throws Exception {int n = nextInt();int[] A = new int[100005];int ans = 0;for(int i = 1; i <= n; i++) {A[i] = nextInt();if(A[i] > A[i - 1]) ans += A[i] - A[i - 1];}System.out.println(ans);
}

http://www.ppmy.cn/news/58386.html

相关文章

3分钟快速了解mysql和es中字段类型相似之处

Elasticsearch 和 MySQL 的字段类型在很多方面具有相似之处。这些相似之处主要反映在它们表示基本数据类型的能力上。下面是 Elasticsearch 和 MySQL 中一些相似的字段类型&#xff1a; 文本&#xff1a; Elasticsearch&#xff1a;text 和 keywordMySQL&#xff1a;VARCHAR, C…

OCC的拓扑基础数据结构

在OpenCASCADE中,提供了一系列的拓扑基础数据结构,用于表示几何实体的拓扑结构,其中最基本的是TopoDS_Shape。下面是一些其他常用的拓扑数据结构: TopoDS_TCompound:代表了复合实体,即由多个几何实体组合而成的实体,可以包含任意数量和类型的其他几何实体。 TopoDS_TCom…

代码随想录算法训练营第二十九天 | 递增子序列(新的树层去重)、排列、排列中树枝树层去重

491.递增子序列 文档讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;回溯算法精讲&#xff0c;树层去重与树枝去重 | LeetCode&#xff1a;491.递增子序列_哔哩哔哩_bilibili 状态&#xff1a;能直接写出来。不过还是要再看一遍&#xff0c;因为是新的去…

SAP 调用外部程序CSServerSimple SM59 geteway service

SAP 的方法&#xff08;函数&#xff09;如何用其它语言实现&#xff0c;是SAP的funcation module 如果在外面实现&#xff0c;就是在SAP里创建一个FM&#xff0c;然后在外面用其它语言&#xff0c;JAVA&#xff0c;.net实现这个方法完成复杂功能。 在SAP外部启动一个服务&…

Bark:基于转换器的文本到音频模型

Bark是由Suno创建的一个基于转换器的文本到音频模型。Bark可以生成高度逼真的多语言语音以及其他音频&#xff0c;包括音乐、背景噪音和简单的音效。该模型还可以产生非语言交流&#xff0c;如大笑、叹息和哭泣。为了支持研究社区&#xff0c;我们正在提供对预先训练的模型检查…

SDL库入门:掌握跨平台游戏开发和多媒体编程

目录标题 1.引言2. SDL基本概念与架构SDL的设计原则与模块架构SDL版本&#xff1a;SDL 1.2与SDL 2.0跨平台支持&#xff1a;Windows、Linux、macOS等 3. 初始化与窗口创建SDL初始化与库设置窗口创建与渲染器初始化设置视频模式与全屏切换 4. 图形绘制与纹理管理SDL\_Surface与S…

【从0到1了解Libarchive】Libarchive的用途意义以及成功入门Libarchive

目录 0 如果你还不知道Libarchive是什么请一定要先看一下 1 简介 1.1 为什么实现Libarchive 1.2 到底都有谁在用呢&#xff1f; 1.3 Libarchive都有哪些功能 1.4 我们可以通过这些获取更多信息 1.5 如何贡献 2 Libarchive归档与压缩 3 Libarchive编译 4 Libarchive简…

AutoHotKey简单入门

简单入门 快捷键 ^j::Send, Hello world! Return^j::代表CtrlJ&#xff0c;其中^代表Ctrl键 Send命令&#xff1a;在光标处输入Hello world! 也就是说&#xff0c;你按下CtrlJ后&#xff0c;将会输入字符串Hello world! Return即返回 热字串 ::ftw::Free the whales Ret…