#5415. Problem 1. Make All Distinct

0

Problem 1. Make All Distinct

问题 1. 全部设为不同 (Make All Distinct)

USACO 2026 第三次竞赛,Bronze 组

你有一个整数数组 a1,,aNa_1, \dots, a_N,其元素初始值在 [1,N][1, N] 范围内(1N21051 \le N \le 2 \cdot 10^5),以及一个非零整数 KKNKN,K0-N \le K \le N, K \neq 0)。

你可以根据需要执行以下操作任意多次(可能为零次):选择一个索引 ii 并设置 ai=ai+Ka_i = a_i + K

找到使所有数组元素都不同所需的最小操作次数

输入格式 (输入包含 TT (1T101 \le T \le 10) 个独立测试用例。每个测试用例如下描述:

第一行包含 NNKK

第二行包含 a1,,aNa_1, \dots, a_N

保证所有测试用例中 NN 的总和不超过 10610^6

输出格式 (在终端/stdout上输出单个行):

对于每个测试用例,输出一行包含最小操作次数。

注意:此问题中涉及的整数大小可能很大,可能需要使用 64 位整数数据类型(例如 C/C++ 中的 "long long")。

示例输入:


4
4 1
4 1 4 1
4 -3
4 1 4 1
4 4
4 1 4 1
3 -1
1 1 2

示例输出:


2
4
2
1

对于第一个测试用例,这里是一个可能的操作序列,通过两次操作使所有元素不同:


4 1 4 1
5 1 4 1 (a_1 += 1)
5 1 4 2 (a_4 += 1)

评分: 输入 2-4:N50N\le 50 输入 5-7:N2000N\le 2000 输入 8-10:K=1K=1 输入 11-13:无额外约束。

问题来源:Akshaj Arora, Benjamin Qi