CF1249A Yet Another Dividing into Teams

题目描述

你是一组由 $n$ 名学生组成的队伍的教练。第 $i$ 名学生的编程能力为 $a_i$。所有学生的编程能力值均不相同。你希望将他们分成若干个队伍,要求满足: - 对于任意两个学生 $i$ 和 $j$,如果 $|a_i - a_j| = 1$,则他们不能在同一个队伍中(即同一队伍中任意两名学生的能力值之差必须严格大于 $1$); - 队伍的数量要尽可能少。 你需要回答 $q$ 个独立的询问。

输入格式

输入的第一行包含一个整数 $q$($1 \leq q \leq 100$),表示询问的数量。接下来有 $q$ 组询问。 每组询问的第一行包含一个整数 $n$($1 \leq n \leq 100$),表示该组询问中的学生人数。第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \leq a_i \leq 100$,所有 $a_i$ 均不相同),其中 $a_i$ 表示第 $i$ 名学生的编程能力值。

输出格式

对于每组询问,输出一个整数,表示在满足条件的情况下,最少需要分成多少个队伍。

说明/提示

在样例的第一个询问中,有 $n=4$ 名学生,能力值为 $a=[2, 10, 1, 20]$。这里唯一的限制是第 $1$ 名和第 $3$ 名学生不能在同一个队伍中(因为 $|a_1 - a_3|=|2-1|=1$)。可以将他们分成 $2$ 个队伍,例如第 $1$、$2$、$4$ 名学生在第一个队伍,第 $3$ 名学生在第二个队伍。 在样例的第二个询问中,有 $n=2$ 名学生,能力值为 $a=[3, 6]$。可以将他们全部分在同一个队伍中。 由 ChatGPT 4.1 翻译