#P13039. [GCJ 2021 #3] Build-A-Pair

    ID: 14919 远端评测题 5000ms 1024MiB 尝试: 0 已通过: 0 显示难度普及+/提高− 上传者: 标签>贪心2021枚举分类讨论Google Code Jam

[GCJ 2021 #3] Build-A-Pair

题目描述

你需要构造一对正整数。为此,你会获得一个十进制数字列表作为可用数字。你必须恰好使用列表中的每个数字一次,但可以自由选择哪些数字用于第一个整数,哪些数字用于第二个整数。同时,你可以自由决定每个整数内部数字的排列顺序,但不允许在任何整数的最高位(最左侧)放置零。请注意,你也不能选择仅包含一个零的整数,因为它不是正整数。

例如,给定数字列表 [1,0,2,0,4,3][1, 0, 2, 0, 4, 3]。你可以构造的有效数字对包括 (200,143)(200, 143) 和 (3,12400)(3, 12400)。而以下数字对则是无效的:

  • (0102,34)(0102, 34):存在前导零。
  • (0,12340)(0, 12340):包含非正整数。
  • (10,243)(10, 243) 和 (12300,47)(12300, 47):这些数字对中使用的数字列表与给定列表不完全一致。

给定数字列表,如何构造一对数字,使得它们的绝对差最小?

输入格式

输入的第一行包含测试用例的数量 T\mathbf{T}。随后是 T\mathbf{T} 行,每行描述一个测试用例,包含一个数字字符串 D\mathbf{D}。D\mathbf{D} 的每个字符都是你必须使用的数字。

输出格式

对于每个测试用例,输出一行 Case #x: y,其中 xx 是测试用例编号(从 1 开始),yy 是根据上述规则从 D\mathbf{D} 构造的两个整数的最小可能绝对差。

4
1234
0011
07080
0899
Case #1: 7
Case #2: 0
Case #3: 620
Case #4: 1

提示

样例解释

最优构造的数字对为:

  • 样例 #1:3131 和 2424;
  • 样例 #2:1010 和 1010;
  • 样例 #3:700700 和 8080;
  • 样例 #4:8989 和 9090。

数据范围

  • 1≤T≤1001 \leq \mathbf{T} \leq 100。
  • D\mathbf{D} 的每个字符均为十进制数字。
  • D\mathbf{D} 中至少有两个字符不为 ∅\emptyset。

测试集 1(3 分,可见判定)

  • 2≤D2 \leq \mathbf{D} 的长度 ≤8\leq 8。

测试集 2(12 分,可见判定)

  • 2≤D2 \leq \mathbf{D} 的长度 ≤36\leq 36。

翻译由 DeepSeek V3 完成