B. 由积至一

    传统题 1000ms 256MiB

由积至一

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

由积至一

题目描述

给定一个包含 nn 个整数的数组 a=[a1,a2,…,an]a = [a_1, a_2, \dots, a_n]。

你可以对数组中的任意元素进行操作。一次操作 定义为:

  • 选定一个下标 ii (1≤i≤n1 \le i \le n);
  • 支付 11 枚金币,将 aia_i 的值增加 11 或 减少 11(即 ai←ai+1a_i \leftarrow a_i + 1 或 ai←ai−1a_i \leftarrow a_i - 1)。

你可以对同一个元素进行多次操作。你的目标是:花费最少的金币,使得数组中所有元素的 乘积 恰好等于 11。

请计算并输出达成该目标所需的 最少金币数量。

输入格式

第一行包含一个整数 nn (1≤n≤1051 \le n \le 10^5),表示数组的长度。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n (−109≤ai≤109-10^9 \le a_i \le 10^9)。

输出格式

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

输入输出样例 #1

输入 #1

4
2 -3 0 1

输出 #1

4

输入输出样例 #2

输入 #2

4
-1 -1 -1 -1

输出 #2

0

输入输出样例 #3

输入 #3

3
-5 -3 -5

输出 #3

12

说明/提示

样例 1 解释:

一种最优的操作方案如下:

  • a1=2→1a_1 = 2 \to 1(花费 1)

  • a2=−3→−1a_2 = -3 \to -1(花费 2)

  • a3=0→−1a_3 = 0 \to -1(花费 1)

  • a4=1→1a_4 = 1 \to 1(花费 0)

    最终数组为 [1,−1,−1,1][1, -1, -1, 1],乘积为 1×(−1)×(−1)×1=11 \times (-1) \times (-1) \times 1 = 1。

    总花费为 1+2+1+0=41 + 2 + 1 + 0 = 4。

样例 3 解释:

首先将所有数变为距离最近的 ±1\pm 1:

  • −5→−1-5 \to -1(花费 4)

  • −3→−1-3 \to -1(花费 2)

  • −5→−1-5 \to -1(花费 4)

    此时数组为 [−1,−1,−1][-1, -1, -1],总花费 1010,但乘积为 −1-1。

    由于原数组中没有 00 可供调整符号,我们需要额外花费 22 金币将其中一个 −1-1 变为 11(或者在最初就花费 66 金币将 −5-5 变为 11)。

    总花费为 10+2=1210 + 2 = 12。

【睿爸信奥】入门组算法周赛(20260201)

未参加
状态
已结束
规则
IOI
题目
4
开始于
2026-2-1 0:00
结束于
2026-2-7 6:00
持续时间
3.5 小时
主持人
参赛人数
11