✏️ 纠错
第 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.输出结果
遍历完成后,总糖果数量即为最小需求。
【参考程序】