CF1490B.Balanced Remainders

入门

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

You are given a number nn (divisible by 33) and an array a[1…n]a[1 \dots n]. In one move, you can increase any of the array elements by one. Formally, you choose the index ii (1≤i≤n1 \le i \le n) and replace aia_i with ai+1a_i + 1. You can choose the same index ii multiple times for different moves.

Let's denote by c0c_0, c1c_1 and c2c_2 the number of numbers from the array aa that have remainders 00, 11 and 22 when divided by the number 33, respectively. Let's say that the array aa has balanced remainders if c0c_0, c1c_1 and c2c_2 are equal.

For example, if n=6n = 6 and a=[0,2,5,5,4,8]a = [0, 2, 5, 5, 4, 8], then the following sequence of moves is possible:

  • initially c0=1c_0 = 1, c1=1c_1 = 1 and c2=4c_2 = 4, these values are not equal to each other. Let's increase a3a_3, now the array a=[0,2,6,5,4,8]a = [0, 2, 6, 5, 4, 8];
  • c0=2c_0 = 2, c1=1c_1 = 1 and c2=3c_2 = 3, these values are not equal. Let's increase a6a_6, now the array a=[0,2,6,5,4,9]a = [0, 2, 6, 5, 4, 9];
  • c0=3c_0 = 3, c1=1c_1 = 1 and c2=2c_2 = 2, these values are not equal. Let's increase a1a_1, now the array a=[1,2,6,5,4,9]a = [1, 2, 6, 5, 4, 9];
  • c0=2c_0 = 2, c1=2c_1 = 2 and c2=2c_2 = 2, these values are equal to each other, which means that the array aa has balanced remainders.

Find the minimum number of moves needed to make the array aa have balanced remainders.

给你一个数 nn(能被 33 整除)和一个数组 a[1…n]a[1 \dots n]。在一次操作中,你可以将数组中的任意一个元素加 11。形式上,你选择一个下标 ii(1≤i≤n1 \le i \le n),并将 aia_i 替换为 ai+1a_i + 1。对于不同的操作,你可以多次选择同一个下标 ii。

记 c0c_0、c1c_1 和 c2c_2 分别为数组 aa 中模 33 余 00、余 11、余 22 的元素个数。若 c0=c1=c2c_0 = c_1 = c_2,则称数组 aa 具有平衡的余数。

例如,当 n=6n = 6 且 a=[0,2,5,5,4,8]a = [0, 2, 5, 5, 4, 8] 时,以下操作序列是可行的:

  • 初始时 c0=1c_0 = 1,c1=1c_1 = 1,c2=4c_2 = 4,三者不相等。我们对 a3a_3 加 11,此时数组变为 a=[0,2,6,5,4,8]a = [0, 2, 6, 5, 4, 8];
  • 此时 c0=2c_0 = 2,c1=1c_1 = 1,c2=3c_2 = 3,三者仍不相等。我们对 a6a_6 加 11,此时数组变为 a=[0,2,6,5,4,9]a = [0, 2, 6, 5, 4, 9];
  • 此时 c0=3c_0 = 3,c1=1c_1 = 1,c2=2c_2 = 2,三者仍不相等。我们对 a1a_1 加 11,此时数组变为 a=[1,2,6,5,4,9]a = [1, 2, 6, 5, 4, 9];
  • 此时 c0=2c_0 = 2,c1=2c_1 = 2,c2=2c_2 = 2,三者相等,说明数组 aa 已具有平衡的余数。

求使数组 aa 具有平衡余数所需的最少操作次数。

输入格式

The first line contains one integer tt (1≤t≤1041 \le t \le 10^4). Then tt test cases follow.

The first line of each test case contains one integer nn (3≤n≤3⋅1043 \le n \le 3 \cdot 10^4) — the length of the array aa. It is guaranteed that the number nn is divisible by 33.

The next line contains nn integers a1,a2,…,ana_1, a_2, \ldots, a_n (0≤ai≤1000 \leq a_i \leq 100).

It is guaranteed that the sum of nn over all test cases does not exceed 150 000150\,000.

第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4)。随后是 tt 组测试数据。

每组测试数据的第一行包含一个整数 nn(3≤n≤3⋅1043 \le n \le 3 \cdot 10^4)—— 表示数组 aa 的长度。保证 nn 能被 33 整除。

下一行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(0≤ai≤1000 \leq a_i \leq 100)。

保证所有测试数据的 nn 之和不超过 150 000150\,000。

输出格式

For each test case, output one integer — the minimum number of moves that must be made for the aa array to make it have balanced remainders.

对于每个测试用例,输出一个整数——使数组 aa 满足余数平衡所需的最少操作次数。

输入输出样例

  • 输入#1

    4
    6
    0 2 5 5 4 8
    6
    2 0 2 1 0 0
    9
    7 1 3 4 2 10 3 9 6
    6
    0 1 2 3 4 5

    输出#1

    3
    1
    3
    0

说明/提示

The first test case is explained in the statements.

In the second test case, you need to make one move for i=2i=2.

The third test case you need to make three moves:

  • the first move: i=9i=9;
  • the second move: i=9i=9;
  • the third move: i=2i=2.

In the fourth test case, the values c0c_0, c1c_1 and c2c_2 initially equal to each other, so the array aa already has balanced remainders.

第一个测试用例已在题目描述中解释。

在第二个测试用例中,你需要对 i=2i=2 执行一次操作。

在第三个测试用例中,你需要执行三次操作:

  • 第一次操作:i=9i=9;
  • 第二次操作:i=9i=9;
  • 第三次操作:i=2i=2。

在第四个测试用例中,初始时 c0c_0、c1c_1 和 c2c_2 的值彼此相等,因此数组 aa 已具有平衡的余数。

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

首页