✏️ 纠错
第 129 题 / 共 155 题

题目描述

有 n 位小朋友排成一队等待老师分糖果。第 i 位小朋友想要至少 ai​ 颗糖果,并且分给他的糖果数量必须比分给前一位小朋友的糖果数量更多,不然他就会不开心。

老师想知道至少需要准备多少颗糖果才能让所有小朋友都开心。你能帮帮老师吗?

输入格式

第一行,一个正整数 n,表示小朋友的人数。

第二行,n 个正整数 a1​,a2​,…,an​,依次表示每位小朋友至少需要的糖果数量。

输出格式

输出一行,一个整数,表示最少需要准备的糖果数量。

输入输出样例

输入 #1

4
1 4 3 3

输出 #1

16

输入 #2

15
314 15926 53589793 238462643 383279502 8 8 4 1 9 7 1 6 9 3

输出 #2

4508143253

说明/提示

对于所有测试点,保证 1≤n≤1000,1≤ai​≤109。

📝 题目解析

【考纲知识点】 一维数组的基本应用、算法:擂台法

【解题思路】

1.初始化糖果数量

从第一个小朋友开始,他至少需要a[0]颗糖果,因此直接分配a[0]颗糖果。

初始化总糖果数量为a[0]。

2.遍历每位小朋友

对于第i位小朋友:

如果a[i]>a[i−1]:说明满足了递增条件,直接分配

a[i]颗糖果。如果a[i]≤a[i−1]:为了满足递增约束,需要分配至少比前一位多1颗糖果,即a[i]=a[i−1]+1。

每次分配后,将分配的糖果数量累加到总数中。

3.输出结果

遍历完成后,总糖果数量即为最小需求。

【参考程序】