AT_arc006_3.[ARC006C] 積み重ね

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

高桥君已经长大成人,决定离开父母独自生活。他需要把行李从卡车搬到新家的房间里,但如果把纸箱平铺在地板上,房间就会被纸箱占满,今晚他就无法铺床睡觉了。
因此,他决定不把纸箱一个个分开放,而是把纸箱适当地堆叠成若干堆。然而,每个纸箱都有一定的重量,如果把比下面纸箱更重的纸箱堆在上面,下面的纸箱就会被压坏。

图示:下面的纸箱必须比上面的纸箱重或相等。

现在,按照从卡车搬运的顺序,给出了每个纸箱的重量。请思考一种堆叠方式,使得不会压坏任何纸箱,并且堆叠出的纸箱堆的数量最少。请输出最少需要多少堆纸箱。

输入按以下格式从标准输入给出。

输入格式

输入共 N+1N+1 行。

  • 第 11 行是一个整数 NN,表示纸箱的数量,1≤N≤501 \leq N \leq 50。
  • 接下来的 NN 行,第 i+1i+1 行给出第 ii 个搬运的纸箱的重量 wiw_i,1≤wi≤100, ⁣0001 \leq w_i \leq 100,\!000。

输出格式

输出一行,表示最少需要的纸箱堆的数量。最后请输出换行符。

说明/提示

  • 例如输入:
5
4
3
1
2
1

输出:

2
  • 按照示例中的顺序堆叠,可以形成 22 堆纸箱。

  • 不能将第 33 个纸箱后面的重量为 22 的纸箱堆在它上面,因此无法只用 11 堆,最少为 22 堆。

  • 例如输入:

7
93
249
150
958
442
391
25

输出:

3
  • 如图所示,可以堆成 33 堆。

  • 说明:图中的 225225 应为 2525,敬请谅解。

  • 例如输入:

4
100
100
100
100

输出:

1
  • 相同重量的纸箱可以堆叠,因此只需 11 堆。

  • 例如输入:

6
5
10
15
20
25
30

输出:

6
  • 没有任何纸箱可以堆在前面搬运的纸箱上,因此每个纸箱都单独成堆,最少为 66 堆。

  • 例如输入:

15
3
1
4
1
5
9
2
6
5
3
5
8
9
7
9

输出:

6
  • 如图所示,这样堆叠时堆的数量最少。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页