CF2152A Increase or Smash
题目描述
Geumjae 有一个长度为 $n$ 的数组 $a$,该数组的初始元素全为 $0$。他的目标是通过最少的操作次数,将其转变为给定的目标数组。
他可以任意次数、任意顺序执行以下两种操作:
1. 增加操作(Increase):选择任意一个正整数 $x$,使数组 $a$ 的所有元素都加上 $x$。即,他选择正整数 $x$,对于每个 $i$($1 \le i \le n$),将 $a_i$ 替换为 $a_i + x$。
2. 归零操作(Smash):将数组 $a$ 中的某些元素(可能没有也可能全部)设为 $0$。即,对于每个 $i$($1 \le i \le n$),将 $a_i$ 替换为 $0$ 或保持不变。
给定数组 $a$ 的最终目标状态,求 Geumjae 需要执行的最少操作次数(Increase 和 Smash 总和)。
可以证明,对于任意给定的目标数组,总能通过一系列操作实现。
输入格式
每组测试包含多个测试用例。第一行为测试用例数 $t$($1 \le t \le 1000$)。接下来描述每个测试用例。
每个测试用例的第一行为一个整数 $n$($1 \le n \le 100$),表示数组 $a$ 的长度。
第二行为 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 100$),表示目标数组 $a$。
输出格式
对于每个测试用例,输出一个整数,表示所需的最小操作次数。
说明/提示
第一个测试用例说明:
目标数组为 $[1, 1, 3]$。可能的最小操作序列如下,共使用 3 次操作:
1. 初始数组为 $[0, 0, 0]$。执行一次 Increase 操作,$x = 2$,数组变为 $[2, 2, 2]$。
2. 接着对前两个元素执行一次 Smash 操作,数组变为 $[0, 0, 2]$。
3. 最后,执行一次 Increase 操作,$x = 1$,数组变为 $[1, 1, 3]$。
共执行了 $2$ 次 Increase 操作和 $1$ 次 Smash 操作,总共 $3$ 次操作。
第二个测试用例说明:
目标数组为 $[100]$。只需执行一次 Increase 操作,$x=100$,即可达到目标数组。
由 ChatGPT 5 翻译