CF2152A.Increase or Smash

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Increase or Smash

题目描述

Geumjae 有一个长度为 nn 的数组 aa,该数组的初始元素全为 00。他的目标是通过最少的操作次数,将其转变为给定的目标数组。

他可以任意次数、任意顺序执行以下两种操作:

  1. 增加操作(Increase):选择任意一个正整数 xx,使数组 aa 的所有元素都加上 xx。即,他选择正整数 xx,对于每个 ii1in1 \le i \le n),将 aia_i 替换为 ai+xa_i + x
  2. 归零操作(Smash):将数组 aa 中的某些元素(可能没有也可能全部)设为 00。即,对于每个 ii1in1 \le i \le n),将 aia_i 替换为 00 或保持不变。

给定数组 aa 的最终目标状态,求 Geumjae 需要执行的最少操作次数(Increase 和 Smash 总和)。

可以证明,对于任意给定的目标数组,总能通过一系列操作实现。

输入格式

每组测试包含多个测试用例。第一行为测试用例数 tt1t10001 \le t \le 1000)。接下来描述每个测试用例。

每个测试用例的第一行为一个整数 nn1n1001 \le n \le 100),表示数组 aa 的长度。

第二行为 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n1ai1001 \le a_i \le 100),表示目标数组 aa

输出格式

对于每个测试用例,输出一个整数,表示所需的最小操作次数。

说明/提示

第一个测试用例说明:

目标数组为 [1,1,3][1, 1, 3]。可能的最小操作序列如下,共使用 3 次操作:

  1. 初始数组为 [0,0,0][0, 0, 0]。执行一次 Increase 操作,x=2x = 2,数组变为 [2,2,2][2, 2, 2]
  2. 接着对前两个元素执行一次 Smash 操作,数组变为 [0,0,2][0, 0, 2]
  3. 最后,执行一次 Increase 操作,x=1x = 1,数组变为 [1,1,3][1, 1, 3]

共执行了 22 次 Increase 操作和 11 次 Smash 操作,总共 33 次操作。

第二个测试用例说明:

目标数组为 [100][100]。只需执行一次 Increase 操作,x=100x=100,即可达到目标数组。

由 ChatGPT 5 翻译

样例

3
3
1 1 3
1
100
9
9 9 3 2 4 4 8 5 3
3
1
11

在线编程 IDE

建议全屏模式获得最佳体验