#P13163. [GCJ 2017 #1A] Ratatouille
[GCJ 2017 #1A] Ratatouille
Description
你发现了终极的“ratatouille”(法国蔬菜杂烩)配方!你已经知道制作一份 ratatouille 需要哪些原料,以及每种原料需要多少克。你相信“人人都能做菜”,所以你想把这个配方分享给全世界……顺便赚点钱!
你订购了一些便于运输的原料包装。每个包装只包含一种原料;即使是同一种原料,不同包装中的数量也可能不同。为了方便,你为每种原料都订购了相同数量的包装。
你希望用这些包装尽可能多地组装出 ratatouille 套装,发给顾客。每个套装由每种原料各一个包装组成,并贴有一个标签,标明该套装可以制作多少份 ratatouille(份数为整数)。为了保证不亏待顾客且不浪费食材,每个包装中的原料含量必须在制作标签上标明的份数所需原料的 到 (含端点)之间。
例如,假设制作一份 ratatouille 需要 克番茄和 克洋葱。假如你有一个 克的番茄包装和一个 克的洋葱包装。你可以将它们组合成一个可以制作两份 ratatouille 的套装。制作两份需要 克番茄和 克洋葱。你拥有的 克番茄在 克的 区间内, 克洋葱也在 克的 区间内,因此这是可行的。然而,你不能说这个套装可以制作一份或三份 ratatouille,也不能说可以制作 份(份数必须为整数)。
注意,有些包装组合永远无法组成一个套装。继续上面的例子,如果你有一个 克的番茄包装和一个 克的洋葱包装,无论制作多少份都不行。三份需要 克番茄和 克洋葱,但 克洋葱不在 区间内。没有其他整数份数可行。
你希望让尽可能多的顾客享受到你的配方,所以你想制作最多数量的有效套装。(当然,每个包装最多只能用在一个套装中。)你最多能组装出多少个套装?注意,你不需要最大化 ratatouille 的总份数。
Input Format
输入的第一行为测试用例数 。接下来有 组测试数据。每组测试数据包括:
- 一行包含两个整数 和 ,分别表示原料种类数和每种原料的包装数量。
- 一行包含 个整数 ,第 个数表示制作一份 ratatouille 需要的第 种原料的克数。
- 接下来 行,每行包含 个整数。第 行的第 个数 表示第 种原料的第 个包装的克数。
Output Format
对于每组测试数据,输出一行 Case #x: y,其中 是测试用例编号(从 1 开始), 是你最多能组装出的套装数量。
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 中,你可以用第一种原料的 克包装和第二种原料的 克包装,组装成一个制作 份 ratatouille 的套装。制作 份需要第一种原料 克,你有 克,正好是 克的 ,在允许范围内。第二种原料需要 克,你有 克,正好是 ,也在允许范围内。
但组装完这个套装后,剩下的包装无法再组成套装。 克的第一种原料和 克的第二种原料无法组成 份(或其他份数)的套装。实际上,( 克, 克) 是唯一能组成的套装。
在样例 4 中,无法组成任何套装。注意,配方要求每种原料的顺序和用量都不能变,原料不可互换。这可是正宗法式料理!
在样例 5 中,配方只有一种原料——多么优雅!一份不能超过 克,两份不能少于 克。可以组装出三个套装:两个 克包装,一个 克包装。
在样例 6 中,可以组装出三个有效套装:( 克, 克, 克),可制作 份;( 克, 克, 克) 和 ( 克, 克, 克),每个都可制作 份。注意,( 克, 克, 克) 也可以标为 、 或 份,但只要套装有效,份数具体是多少并不重要。
数据范围
- 。
- ,对所有 。
- ,对所有 。
小数据集(12 分,测试点 1 - 可见)
- 时间限制:15 秒。
- 。
- 。
大数据集(23 分,测试点 2 - 隐藏)
- 时间限制:30 秒。
- 。
- 。
- 。
由 ChatGPT 4.1 翻译
京公网安备 11011102002149号