P13323 [GCJ 2012 #1C] Box Factory
题目描述
你拥有一家拥有两条装配线的工厂。第一条装配线生产盒子,第二条装配线生产可以放入这些盒子的玩具。每种类型的盒子只对应一种类型的玩具,反之亦然。
一开始,你会从第一条装配线上取一个盒子,从第二条装配线上取一个玩具。此时你有如下几种选择:
* 你可以随时丢弃盒子,取下一个盒子。
* 你可以随时丢弃玩具,取下一个玩具。
* 如果盒子和玩具是同一种类型,你可以将玩具放入盒子,并将其发给客户。
你总是按照生产顺序依次取盒子和玩具。你已知盒子和玩具的生产顺序,并希望制定一种策略,使得你发出的装盒玩具数量尽可能多。
**注意**:两条装配线会生产大量盒子和玩具,但它们通常会长时间连续生产同一种类型后才切换。
输入格式
输入的第一行为测试用例数 $T$。接下来有 $T$ 组测试数据。
每组测试数据第一行为两个整数 $N$ 和 $M$。接下来一行为 $2 \times N$ 个整数 $a_1, A_1, a_2, A_2, \dots, a_N, A_N$,再接下来一行为 $2 \times M$ 个整数 $b_1, B_1, b_2, B_2, \dots, b_M, B_M$。
这表示第一条装配线会先生产 $a_1$ 个类型为 $A_1$ 的盒子,然后生产 $a_2$ 个类型为 $A_2$ 的盒子,依此类推,直到最后生产 $a_N$ 个类型为 $A_N$ 的盒子。第二条装配线同理,先生产 $b_1$ 个类型为 $B_1$ 的玩具,接着 $b_2$ 个类型为 $B_2$ 的玩具,依此类推,直到最后生产 $b_M$ 个类型为 $B_M$ 的玩具。
只有当盒子和玩具类型编号相同时,二者才能配对。
输出格式
对于每个测试用例,输出一行 "Case #x: y",其中 $x$ 为测试用例编号(从 $1$ 开始),$y$ 为你最多能发出的装盒玩具数量。
说明/提示
**限制条件**
- $1 \leq T \leq 100$
- $1 \leq a_i, b_i \leq 10^{16}$
- $1 \leq A_i, B_i \leq 100$
**测试集 1(12 分,结果可见)**
- $1 \leq N \leq 3$
- $1 \leq M \leq 100$
**测试集 2(23 分,结果隐藏)**
- $1 \leq N, M \leq 100$
翻译由 ChatGPT-4.1 完成。