#P12981. [GCJ 2022 Qualification] d1000000

[GCJ 2022 Qualification] d1000000

Description

虽然最常见的骰子有 6 个面,每个面显示 1 到 6 的不同整数,但许多游戏会使用其他类型的骰子。特别地,dkd_k 表示一个有 kk 个面的骰子,每个面显示 1 到 kk 的不同整数。d6d_6 是标准骰子,d4d_4 有四个面,而 d1000000d_{1000000} 有一百万个面。

在这个问题中,我们从一个包含 N\mathbf{N} 个骰子的集合开始。第 ii 个骰子是 dSid_{\mathbf{S}_i},即它有 Si\mathbf{S}_i 个面,分别显示 11Si\mathbf{S}_i 的整数。从 xx 开始、长度为 \ell 的顺子是指整数序列 xx, x+1x + 1, \cdots, x+(1)x + (\ell - 1)。我们需要选择部分(或全部)骰子,并从每个骰子中选取一个数字来组成一个顺子。用这种方式我们能组成的最长顺子有多长?

Input Format

输入的第一行给出测试用例的数量 T\mathbf{T}。随后是 T\mathbf{T} 个测试用例。每个测试用例由两行描述:第一行包含一个整数 N\mathbf{N},表示游戏中的骰子数量;第二行包含 N\mathbf{N} 个整数 S1\mathbf{S}_1, S2\mathbf{S}_2, \cdots, SN\mathbf{S}_\mathbf{N},分别表示每个骰子的面数。

Output Format

对于每个测试用例,输出一行 Case #x: y,其中 xx 是测试用例编号(从 11 开始),yy 是能组成顺子的最长骰子数量。

4
4
6 10 12 8
6
5 4 5 4 4 4
10
10 10 7 6 7 4 4 5 7 4
1
10
Case #1: 4
Case #2: 5
Case #3: 9
Case #4: 1

Hint

样例解释

在样例 #1 中,有多个方法可以用所有 44 个骰子组成一个顺子。上图展示了一种可能的方式。

在样例 #2 中,由于所有骰子的最大面数都不超过 55,因此无法组成超过 55 个骰子的顺子。有多种方法可以组成恰好 55 个骰子的顺子,例如:从两个 d5d_5 中选取 4455,再从三个 d4d_4 中选取 112233,形成顺子 1,2,3,4,51, 2, 3, 4, 5

在样例 #3 中,可以通过丢弃一个 d4d_4 并使用剩余的 d4d_4d5d_5d6d_6 获取 1144,用 d7d_7 获取 5577,用 d10d_{10} 获取 8899,从而组成顺子 1,2,3,4,5,6,7,8,91, 2, 3, 4, 5, 6, 7, 8, 9。无法组成长度为 1010 的顺子,因此这是最优解。

在样例 #4 中,我们只能组成长度为 11 的顺子,但可以通过从给定的 d10d_{10} 中任选一个数字来实现。

限制条件

  • 1T1001 \leq \mathbf{T} \leq 100

测试集 1(9 分,可见评测结果)

  • 1N101 \leq \mathbf{N} \leq 10
  • 4Si204 \leq \mathbf{S}_i \leq 20,对所有 ii 成立。

测试集 2(11 分,可见评测结果)

  • 1N1051 \leq \mathbf{N} \leq 10^5
  • 4Si1064 \leq \mathbf{S}_i \leq 10^6,对所有 ii 成立。

翻译由 DeepSeek V3 完成