#P13163. [GCJ 2017 #1A] Ratatouille

[GCJ 2017 #1A] Ratatouille

Description

你发现了终极的“ratatouille”(法国蔬菜杂烩)配方!你已经知道制作一份 ratatouille 需要哪些原料,以及每种原料需要多少克。你相信“人人都能做菜”,所以你想把这个配方分享给全世界……顺便赚点钱!

你订购了一些便于运输的原料包装。每个包装只包含一种原料;即使是同一种原料,不同包装中的数量也可能不同。为了方便,你为每种原料都订购了相同数量的包装。

你希望用这些包装尽可能多地组装出 ratatouille 套装,发给顾客。每个套装由每种原料各一个包装组成,并贴有一个标签,标明该套装可以制作多少份 ratatouille(份数为整数)。为了保证不亏待顾客且不浪费食材,每个包装中的原料含量必须在制作标签上标明的份数所需原料的 90%90\%110%110\%(含端点)之间。

例如,假设制作一份 ratatouille 需要 500500 克番茄和 300300 克洋葱。假如你有一个 900900 克的番茄包装和一个 660660 克的洋葱包装。你可以将它们组合成一个可以制作两份 ratatouille 的套装。制作两份需要 10001000 克番茄和 600600 克洋葱。你拥有的 900900 克番茄在 10001000 克的 [90%,110%][90\%, 110\%] 区间内,660660 克洋葱也在 600600 克的 [90%,110%][90\%, 110\%] 区间内,因此这是可行的。然而,你不能说这个套装可以制作一份或三份 ratatouille,也不能说可以制作 1.9991.999 份(份数必须为整数)。

注意,有些包装组合永远无法组成一个套装。继续上面的例子,如果你有一个 15001500 克的番茄包装和一个 809809 克的洋葱包装,无论制作多少份都不行。三份需要 15001500 克番茄和 900900 克洋葱,但 809809 克洋葱不在 [90%,110%][90\%, 110\%] 区间内。没有其他整数份数可行。

你希望让尽可能多的顾客享受到你的配方,所以你想制作最多数量的有效套装。(当然,每个包装最多只能用在一个套装中。)你最多能组装出多少个套装?注意,你不需要最大化 ratatouille 的总份数。

Input Format

输入的第一行为测试用例数 TT。接下来有 TT 组测试数据。每组测试数据包括:

  • 一行包含两个整数 NNPP,分别表示原料种类数和每种原料的包装数量。
  • 一行包含 NN 个整数 RiR_i,第 ii 个数表示制作一份 ratatouille 需要的第 ii 种原料的克数。
  • 接下来 NN 行,每行包含 PP 个整数。第 ii 行的第 jj 个数 QijQ_{ij} 表示第 ii 种原料的第 jj 个包装的克数。

Output Format

对于每组测试数据,输出一行 Case #x: y,其中 xx 是测试用例编号(从 1 开始),yy 是你最多能组装出的套装数量。

6
2 1
500 300
900
660
2 1
500 300
1500
809
2 2
50 100
450 449
1100 1101
2 1
500 300
300
500
1 8
10
11 13 17 11 16 14 12 18
3 3
70 80 90
1260 1500 700
800 1440 1600
1700 1620 900
Case #1: 1
Case #2: 0
Case #3: 1
Case #4: 0
Case #5: 3
Case #6: 3

Hint

样例解释

注意,最后一个样例不会出现在 Small 数据集中。

样例 1 和 2 就是题目描述中的例子。

在样例 3 中,你可以用第一种原料的 450450 克包装和第二种原料的 11001100 克包装,组装成一个制作 1010 份 ratatouille 的套装。制作 1010 份需要第一种原料 500500 克,你有 450450 克,正好是 500500 克的 90%90\%,在允许范围内。第二种原料需要 10001000 克,你有 11001100 克,正好是 110%110\%,也在允许范围内。

但组装完这个套装后,剩下的包装无法再组成套装。449449 克的第一种原料和 11011101 克的第二种原料无法组成 1010 份(或其他份数)的套装。实际上,(450450 克, 11001100 克) 是唯一能组成的套装。

在样例 4 中,无法组成任何套装。注意,配方要求每种原料的顺序和用量都不能变,原料不可互换。这可是正宗法式料理!

在样例 5 中,配方只有一种原料——多么优雅!一份不能超过 1111 克,两份不能少于 1818 克。可以组装出三个套装:两个 1111 克包装,一个 1818 克包装。

在样例 6 中,可以组装出三个有效套装:(700700 克, 800800 克, 900900 克),可制作 1010 份;(15001500 克, 16001600 克, 17001700 克) 和 (12601260 克, 14401440 克, 16201620 克),每个都可制作 2020 份。注意,(12601260 克, 14401440 克, 16201620 克) 也可以标为 171718181919 份,但只要套装有效,份数具体是多少并不重要。

数据范围

  • 1T1001 \leq T \leq 100
  • 1Ri1061 \leq R_i \leq 10^6,对所有 ii
  • 1Qij1061 \leq Q_{ij} \leq 10^6,对所有 i,ji, j

小数据集(12 分,测试点 1 - 可见)

  • 时间限制:15 秒。
  • 1N21 \leq N \leq 2
  • 1P81 \leq P \leq 8

大数据集(23 分,测试点 2 - 隐藏)

  • 时间限制:30 秒。
  • 1N501 \leq N \leq 50
  • 1P501 \leq P \leq 50
  • N×P1000N \times P \leq 1000

由 ChatGPT 4.1 翻译