#1536. 糖果分发问题

糖果分发问题

故事背景

在一个幼儿园里,老师要给孩子们分发糖果。为了公平起见,老师制定了以下规则:每个孩子至少得到一颗糖果;对于相邻的孩子,如果一个孩子的表现评分比另一个高,那么评分高的孩子必须得到更多的糖果。作为老师的助手,你需要计算出最少需要多少颗糖果才能满足这些规则。

题目描述

一群孩子站成一排,每个孩子有一个评分。你需要给每个孩子分发糖果,满足以下要求:

  1. 每个孩子至少得到一颗糖果。
  2. 相邻的孩子中,评分高的孩子必须得到比评分低的孩子更多的糖果。

请计算最少需要多少颗糖果。

输入格式

第一行输入一个整数 n ( 1n10001 \leq n \leq 1000 ),表示孩子的数量。

第二行输入 n 个整数,表示每个孩子的评分。

输出格式

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

样例输入 1

3
1 0 2

样例输出 1

5

样例输入 2

3
1 2 2

样例输出 2

4

样例输入 3

5
1 3 2 2 1

样例输出 3

7

提示

  • 这是一个经典的贪心算法问题
  • 可以考虑从左到右和从右到左两次遍历数组
  • 第一次遍历处理右侧评分高于左侧的情况
  • 第二次遍历处理左侧评分高于右侧的情况
  • 最终取两次遍历的最大值作为每个孩子的糖果数