P13379 [GCJ 2011 #3] Dire Straights

题目描述

你正在玩一款纸牌游戏,每张牌上都写有一个整数。 在游戏中,你会得到一些牌——你的手牌。然后你需要将手牌中的牌分组成“顺子”。顺子是一组牌,这组牌上的数字是连续的;例如三张牌 $\{3, 4, 5\}$,或者单独一张牌 $\{7\}$。你获得的奖金等于最短顺子的长度。如果你没有任何牌,则无法组成顺子,因此你获得 $0$ 元。 你将会得到若干组测试数据,每组数据描述了你手中的牌。请你计算每组测试数据中你最多能获得多少奖金。

输入格式

输入的第一行包含测试数据组数 $T$。每组测试数据占一行。每行包含一个整数 $N$,表示你手中的牌数,接下来有 $N$ 个整数,表示这些牌上的数字。所有数字以空格分隔。

输出格式

对于每组测试数据,输出一行,格式为 "Case #$x$: $y$",其中 $x$ 为测试数据编号(从 $1$ 开始),$y$ 为你能获得的最大奖金。

说明/提示

**样例解释** 第 1 组,你有 $1$ 到 $10$ 共 $10$ 张牌,可以组成一个长度为 $10$ 的顺子,获得 $10$ 元。 第 2 组,你可以组成两个顺子 $\{101, 102, 103, 104, 105, 106\}$ 和 $\{103, 104\}$,获得 $2$ 元。但更优的做法是组成 $\{101, 102, 103, 104\}$ 和 $\{103, 104, 105, 106\}$,获得 $4$ 元。 第 4 组,数字为 $9$ 的牌只能单独成顺子,因此只能获得 $1$ 元。 第 3 组,你没有任何牌,因此获得 $0$ 元。你不能无中生有获得奖金。 **数据范围** - $1 \leq T \leq 100$ - 牌上的数字范围为 $1$ 到 $10000$ **小数据范围(4 分,测试点 1 - 可见)** - $0 \leq N \leq 10$ - 时间限制:3 秒 **大数据范围(12 分,测试点 2 - 隐藏)** - $0 \leq N \leq 1000$ - 时间限制:6 秒 由 ChatGPT 4.1 翻译