CF2059E1 Stop Gaming (Easy Version)
题目描述
这是该问题的简单版本。两个版本的区别在于此版本只需找到最小操作次数。只有当您解决了该问题的所有版本后才能进行 hack。
给定 $ n $ 个数组,每个数组长度为 $ m $。设第 $ i $ 个数组的第 $ j $ 个元素为 $ a_{i, j} $。保证所有 $ a_{i, j} $ 互不相同。每次操作中,您可以执行以下步骤:
- 选择一个整数 $ i $($ 1 \le i \le n $)和一个整数 $ x $($ 1 \le x \le 2 \cdot n \cdot m $)。
- 对于从 $ i $ 到 $ n $ 的每个整数 $ k $(按递增顺序),依次执行以下操作:
1. 将元素 $ x $ 添加到第 $ k $ 个数组的开头。
2. 将 $ x $ 赋值为第 $ k $ 个数组的最后一个元素。
3. 移除第 $ k $ 个数组的最后一个元素。
换句话说,您可以在任意数组的开头插入一个元素,之后该数组及后续所有数组的元素都向右移动一位。最后一个数组的末尾元素将被移除。
同时给定操作完成后需要获得的数组描述。即操作结束后,第 $ i $ 个数组的第 $ j $ 个元素应等于 $ b_{i, j} $。保证所有 $ b_{i, j} $ 互不相同。
确定达成目标数组所需的最小操作次数。
输入格式
每个测试包含多个测试用例。第一行包含单个整数 $ t $($ 1 \le t \le 10^4 $)——测试用例数量。接下来是测试用例描述。
每个测试用例的第一行包含两个整数 $ n $ 和 $ m $($ 1 \le n, m \le 3 \cdot 10^5 $)——数组的数量和每个数组的元素数量。
接下来的 $ n $ 行中,第 $ i $ 行包含 $ m $ 个整数 $ a_{i, 1}, a_{i, 2}, \ldots, a_{i, m} $($ 1 \le a_{i, j} \le 2 \cdot n \cdot m $)——原始数组的第 $ i $ 个数组元素。保证所有 $ a_{i, j} $ 互不相同。
接下来的 $ n $ 行中,第 $ i $ 行包含 $ m $ 个整数 $ b_{i, 1}, b_{i, 2}, \ldots, b_{i, m} $($ 1 \le b_{i, j} \le 2 \cdot n \cdot m $)——目标数组的第 $ i $ 个数组元素。保证所有 $ b_{i, j} $ 互不相同。
保证所有测试用例的 $ n \cdot m $ 之和不超过 $ 3 \cdot 10^5 $。
输出格式
对于每个测试用例,输出一个整数——需要执行的最小操作次数。
说明/提示
第一个测试用例中,以下 $ 3 $ 次操作的序列是可行的:
1. 对第一个数组应用操作,$ x = 1 $。此时元素 $ 1 $ 被添加到第一个数组开头,$ x $ 的值变为 $ 6 $。移除末尾元素后,第一个数组变为 $ [1, 2] $。接着将 $ x $ 添加到第二个数组开头,$ x $ 的值变为 $ 4 $。移除第二个数组的末尾元素后,两个数组分别变为 $ [1, 2] $ 和 $ [6, 3] $。
2. 对第二个数组应用操作,$ x = 8 $。此时第一个数组保持不变,两个数组分别变为 $ [1, 2] $ 和 $ [8, 6] $。
3. 对第二个数组应用操作,$ x = 7 $,最终两个数组分别达到目标形态 $ [1, 2] $ 和 $ [7, 8] $。
第二个测试用例中,只能通过 $ 5 $ 次操作达成目标数组。
第三个测试用例中,以下 $ 3 $ 次操作的序列是可行的:
1. 对第一个数组应用 $ x = 11 $ 的操作。
2. 对第二个数组应用 $ x = 12 $ 的操作。
3. 对第三个数组应用 $ x = 13 $ 的操作。
翻译由 DeepSeek R1 完成