CF1490B.Balanced Remainders
入门
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given a number n (divisible by 3) and an array a[1…n]. In one move, you can increase any of the array elements by one. Formally, you choose the index i (1≤i≤n) and replace ai with ai+1. You can choose the same index i multiple times for different moves.
Let's denote by c0, c1 and c2 the number of numbers from the array a that have remainders 0, 1 and 2 when divided by the number 3, respectively. Let's say that the array a has balanced remainders if c0, c1 and c2 are equal.
For example, if n=6 and a=[0,2,5,5,4,8], then the following sequence of moves is possible:
- initially c0=1, c1=1 and c2=4, these values are not equal to each other. Let's increase a3, now the array a=[0,2,6,5,4,8];
- c0=2, c1=1 and c2=3, these values are not equal. Let's increase a6, now the array a=[0,2,6,5,4,9];
- c0=3, c1=1 and c2=2, these values are not equal. Let's increase a1, now the array a=[1,2,6,5,4,9];
- c0=2, c1=2 and c2=2, these values are equal to each other, which means that the array a has balanced remainders.
Find the minimum number of moves needed to make the array a have balanced remainders.
给你一个数 n(能被 3 整除)和一个数组 a[1…n]。在一次操作中,你可以将数组中的任意一个元素加 1。形式上,你选择一个下标 i(1≤i≤n),并将 ai 替换为 ai+1。对于不同的操作,你可以多次选择同一个下标 i。
记 c0、c1 和 c2 分别为数组 a 中模 3 余 0、余 1、余 2 的元素个数。若 c0=c1=c2,则称数组 a 具有平衡的余数。
例如,当 n=6 且 a=[0,2,5,5,4,8] 时,以下操作序列是可行的:
- 初始时 c0=1,c1=1,c2=4,三者不相等。我们对 a3 加 1,此时数组变为 a=[0,2,6,5,4,8];
- 此时 c0=2,c1=1,c2=3,三者仍不相等。我们对 a6 加 1,此时数组变为 a=[0,2,6,5,4,9];
- 此时 c0=3,c1=1,c2=2,三者仍不相等。我们对 a1 加 1,此时数组变为 a=[1,2,6,5,4,9];
- 此时 c0=2,c1=2,c2=2,三者相等,说明数组 a 已具有平衡的余数。
求使数组 a 具有平衡余数所需的最少操作次数。
输入格式
The first line contains one integer t (1≤t≤104). Then t test cases follow.
The first line of each test case contains one integer n (3≤n≤3⋅104) — the length of the array a. It is guaranteed that the number n is divisible by 3.
The next line contains n integers a1,a2,…,an (0≤ai≤100).
It is guaranteed that the sum of n over all test cases does not exceed 150000.
第一行包含一个整数 t(1≤t≤104)。随后是 t 组测试数据。
每组测试数据的第一行包含一个整数 n(3≤n≤3⋅104)—— 表示数组 a 的长度。保证 n 能被 3 整除。
下一行包含 n 个整数 a1,a2,…,an(0≤ai≤100)。
保证所有测试数据的 n 之和不超过 150000。
输出格式
For each test case, output one integer — the minimum number of moves that must be made for the a array to make it have balanced remainders.
对于每个测试用例,输出一个整数——使数组 a 满足余数平衡所需的最少操作次数。
输入输出样例
输入#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=2.
The third test case you need to make three moves:
- the first move: i=9;
- the second move: i=9;
- the third move: i=2.
In the fourth test case, the values c0, c1 and c2 initially equal to each other, so the array a already has balanced remainders.
第一个测试用例已在题目描述中解释。
在第二个测试用例中,你需要对 i=2 执行一次操作。
在第三个测试用例中,你需要执行三次操作:
- 第一次操作:i=9;
- 第二次操作:i=9;
- 第三次操作:i=2。
在第四个测试用例中,初始时 c0、c1 和 c2 的值彼此相等,因此数组 a 已具有平衡的余数。
输入解题思路,AI测评打分。不知道怎么写?