CF2152A.Increase or Smash
入门
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Geumjae 有一个长度为 n 的数组 a,该数组的初始元素全为 0。他的目标是通过最少的操作次数,将其转变为给定的目标数组。
他可以任意次数、任意顺序执行以下两种操作:
- 增加操作(Increase):选择任意一个正整数 x,使数组 a 的所有元素都加上 x。即,他选择正整数 x,对于每个 i(1≤i≤n),将 ai 替换为 ai+x。
- 归零操作(Smash):将数组 a 中的某些元素(可能没有也可能全部)设为 0。即,对于每个 i(1≤i≤n),将 ai 替换为 0 或保持不变。
给定数组 a 的最终目标状态,求 Geumjae 需要执行的最少操作次数(Increase 和 Smash 总和)。
可以证明,对于任意给定的目标数组,总能通过一系列操作实现。
输入格式
每组测试包含多个测试用例。第一行为测试用例数 t(1≤t≤1000)。接下来描述每个测试用例。
每个测试用例的第一行为一个整数 n(1≤n≤100),表示数组 a 的长度。
第二行为 n 个整数 a1,a2,…,an(1≤ai≤100),表示目标数组 a。
输出格式
对于每个测试用例,输出一个整数,表示所需的最小操作次数。
输入输出样例
输入#1
3 3 1 1 3 1 100 9 9 9 3 2 4 4 8 5 3
输出#1
3 1 11
说明/提示
第一个测试用例说明:
目标数组为 [1,1,3]。可能的最小操作序列如下,共使用 3 次操作:
- 初始数组为 [0,0,0]。执行一次 Increase 操作,x=2,数组变为 [2,2,2]。
- 接着对前两个元素执行一次 Smash 操作,数组变为 [0,0,2]。
- 最后,执行一次 Increase 操作,x=1,数组变为 [1,1,3]。
共执行了 2 次 Increase 操作和 1 次 Smash 操作,总共 3 次操作。
第二个测试用例说明:
目标数组为 [100]。只需执行一次 Increase 操作,x=100,即可达到目标数组。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?