#P13030. [GCJ 2021 #1B] Subtransmutation

    ID: 12850 远端评测题 30000ms 1024MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>数学贪心2021数论Bézout 定理Google Code Jam

[GCJ 2021 #1B] Subtransmutation

Description

作为国内最顶尖的炼金术士,你再次被征召,因为需要超越科学的力量来满足国家领袖对稀有金属日益增长的贪婪需求。

每种金属用一个正整数表示。你需要制造 U1\mathbf{U}_{1} 个单位的 1 号金属,U2\mathbf{U}_{2} 个单位的 2 号金属,……,以及 UN\mathbf{U}_{\mathrm{N}} 个单位的 N\mathrm{N} 号金属。N+1\mathrm{N}+1, N+2\mathrm{N}+2, …… 号金属也存在,但你不需要制造特定数量的它们。你可以制造任何金属的过量单位,这些多余的金属可以直接丢弃。

不幸的是,预算削减让你只剩下施展一个简单炼金法术的材料。对于固定的数字 A\mathbf{A}B\mathbf{B}A<B\mathbf{A}<\mathbf{B}),你可以消耗 1 个单位的 ii 号金属,将其分解为 1 个单位的 (iA)(i-\mathbf{A}) 号金属和 1 个单位的 (iB)(i-\mathbf{B}) 号金属。如果其中某个整数不是正数,则不会生成对应的单位。特别地,如果 iAi \leq \mathbf{A},这个法术只会销毁该单位而不生成任何金属。如果 A<iB\mathbf{A}<i \leq \mathbf{B},法术会销毁该单位并只生成 1 个单位的 (iA)(i-\mathbf{A}) 号金属。

你被指派了一位专家矿工协助。专家矿工可以为你开采任意一种金属的 1 个单位。你可以从这个单位出发,使用你的法术制造其他金属,然后再对生成的金属施用该法术来制造更多单位。下图展示了在 A=1\mathbf{A}=1B=2\mathbf{B}=2 时,1 个单位的 4 号金属通过两次法术转化为 1 个单位的 1 号金属和 2 个单位的 2 号金属的过程。

数值越大的金属越重且越难处理,因此你希望向专家矿工请求数值尽可能小的金属单位来完成你的任务,或者指出这是不可能实现的。

Input Format

输入的第一行包含测试用例的数量 T\mathbf{T}。随后是 T\mathbf{T} 个测试用例。每个测试用例包含两行:

  • 第一行包含三个整数 N\mathbf{N}A\mathbf{A}B\mathbf{B},分别表示你需要制造的金属的最大编号,以及定义可用法术的两个参数。
  • 第二行包含 N\mathbf{N} 个整数 $\mathbf{U}_{1}, \mathbf{U}_{2}, \ldots, \mathbf{U}_{\mathbf{N}}$,表示对 1 号、2 号、……、N\mathbf{N} 号金属的需求量。

Output Format

对于每个测试用例,输出一行 Case #x: y,其中 xx 是测试用例编号(从 1 开始),yy 是 IMPOSSIBLE(如果无法从 1 个单位的某种金属开始制造所有所需金属),否则 yy 是最小的金属编号,使得从它的 1 个单位出发可以制造所有所需金属。

3
2 1 2
1 2
5 1 2
2 0 0 0 1
3 1 2
1 1 1
Case #1: 4
Case #2: 6
Case #3: 5
3
3 2 4
1 1 1
3 2 4
1 0 1
5 2 5
1 0 0 0 1
Case #1: IMPOSSIBLE
Case #2: 5
Case #3: 10

Hint

样例解释

在样例 #1 中,我们需要 1 个单位的 1 号金属和 2 个单位的 2 号金属。如果从 1 个单位的 3 号金属开始,施用一次法术会得到 1 个单位的 1 号金属和 1 个单位的 2 号金属,无法再获得额外的 2 号金属。类似地,从 1 号或 2 号金属开始也不够。但如题目描述中的图示所示,从 4 号金属开始可以满足需求。

在样例 #2 中,我们可以从 1 个单位的 6 号金属开始,进行以下操作:

  • 对 6 施法:{6}{4,5}\{6\} \to \{4,5\}
  • 对 4 施法:{4,5}{2,3,5}\{4,5\} \to \{2,3,5\}
  • 对 2 施法:{2,3,5}{1,3,5}\{2,3,5\} \to \{1,3,5\}
  • 对 3 施法:{1,3,5}{1,1,2,5}\{1,3,5\} \to \{1,1,2,5\}

虽然会多出 2 号金属,但这个解是有效的。

在样例 #3 中,我们可以从 5 号金属开始:

  • 对 5 施法:{5}{3,4}\{5\} \to \{3,4\}
  • 对 4 施法:{3,4}{2,3,3}\{3,4\} \to \{2,3,3\}
  • 对 2 施法:{2,3,3}{1,3,3}\{2,3,3\} \to \{1,3,3\}
  • 对 3 施法:{1,3,3}{1,1,2,3}\{1,3,3\} \to \{1,1,2,3\}

其他操作方式也可以满足需求,但都需要从 5 号或更高编号的金属开始。

样例测试集 2 符合测试集 2 的限制。它不会用于测试你的提交。

在测试集 2 的第一个样例中,无法从任何金属的 1 个单位出发,通过 A=2\mathbf{A}=2B=4\mathbf{B}=4 的法术操作得到 1 个单位的 1 号、2 号和 3 号金属。

数据范围

  • 1T1001 \leq \mathbf{T} \leq 100
  • 1N201 \leq \mathbf{N} \leq 20
  • 对所有 ii0Ui200 \leq \mathbf{U}_{\mathbf{i}} \leq 20
  • 1UN1 \leq \mathbf{U}_{\mathbf{N}}
  • $2 \leq \mathbf{U}_{1}+\mathbf{U}_{2}+\cdots+\mathbf{U}_{\mathbf{N}}$

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

  • A=1\mathbf{A}=1
  • B=2\mathbf{B}=2

测试集 2(18 分,隐藏评测结果)

  • 1A<B201 \leq \mathbf{A}<\mathbf{B} \leq 20

翻译由 DeepSeek V3 完成