Red Monster 正在为“过度复杂问题座谈会”准备一场比赛。Red Monster 有一些文件需要上传到比赛准备系统 Polytope。所有文件都在同一个文件夹中;每个文件都有一个创建日期和一个文件名。所有文件名和创建日期都是唯一的。
上传文件的界面如下所示:
| 文件名 | 创建日期 |
|---|---|
| checker.cpp | 17.03.2023 |
| clever_generator.cpp | 18.09.2022 |
| doit.sh | 15.12.2022 |
| examples.txt | 10.12.2021 |
| generator.cpp | 07.05.2021 |
| monsters.Inc.3D.2001.1080p.BluRay.Half-OU.DTS-ES.x264-HDMaNiAcS.avi | 17.10.2021 |
| not_a_virus.exe | 07.06.2022 |
| sol.cpp | 18.06.2021 |
| spxG7HoMSMHH225xjadbnA.tmp | 06.07.2023 |
| tutorial.tex | 03.02.2021 |
| xxx_my_password_DO_NOT_HACK.docx | 10.01.2023 |
| validator.cpp | 15.01.2023 |
在一次操作中,Red Monster 执行以下所有步骤:
- 按文件名或创建日期对文件夹中的文件进行排序。
- 选择一个连续的文件段,并将这些文件上传到 Polytope。
请注意,文件上传后不会被删除。只有一部分文件需要上传到 Polytope。其他文件可能是尴尬的,因此绝不能上传。例如,在上表中,只有文件名加粗的文件应该被上传;其余文件显然与比赛无关。
每个文件只能上传一次,也就是说,不应该有任何文件在多次操作中被上传。上传所有必要文件所需的最少操作次数是多少?
输入格式
第一行包含一个整数 $t$ ($1 \le t \le 1000$),表示测试用例的数量。接下来是 $t$ 个测试用例。每个测试用例描述如下:
设 $n$ 为文件总数。我们将文件索引为 $1 \dots n$,并假设按文件名排序时的文件顺序为 $1, 2, 3, \dots, n$。
每个测试用例的第一行包含两个整数 $n$ 和 $k$ ($1 \le k \le n \le 1000$),分别表示文件总数和需要上传的文件数。
第二行包含 $k$ 个整数 $u_1, u_2, \dots, u_k$ ($1 \le u_i \le n$,对于所有 $i$;所有 $u_i$ 互不相同)。这些是需要上传的文件的索引。
第三行包含一个 $1 \dots n$ 的排列 $p_1, p_2, \dots, p_n$。这表示按创建日期排序时的文件顺序为 $p_1, p_2, \dots, p_n$。
保证所有测试用例的 $n$ 之和不超过 $1000$。
输出格式
对于每个测试用例,在单独的一行中打印答案——一个整数,即上传所有文件所需的最少操作次数。
样例
样例输入 1
2 12 8 2 5 8 3 4 10 12 1 10 5 8 6 4 7 2 3 11 12 1 9 8 4 1 3 5 7 1 4 5 8 7 6 3 2
样例输出 1
3 4
说明
第一个样例测试用例对应于题目描述中的例子。按创建日期排序后,顺序如下:
| ID | 文件名 | 创建日期 |
|---|---|---|
| 10 | tutorial.tex | 03.02.2021 |
| 5 | generator.cpp | 07.05.2021 |
| 8 | sol.cpp | 18.06.2021 |
| 6 | monsters.Inc.3D.2001.1080p.BluRay.Half-OU.DTS-ES.x264-HDMaNiAcS.avi | 17.10.2021 |
| 4 | examples.txt | 10.12.2021 |
| 7 | not_a_virus.exe | 07.06.2022 |
| 2 | clever_generator.cpp | 18.09.2022 |
| 3 | doit.sh | 15.12.2022 |
| 11 | xxx_my_password_DO_NOT_HACK.docx | 10.01.2023 |
| 12 | validator.cpp | 15.01.2023 |
| 1 | checker.cpp | 17.03.2023 |
| 9 | spxG7HoMSMHH225xjadbnA.tmp | 06.07.2023 |
观察到,如果我们只按文件名排序,我们需要使用 4 次操作。如果只按创建日期排序,情况也是如此。一种 3 次操作的解决方案如下:
- 按文件名排序。上传文件 2、3 和 4 (clever_generator.cpp, doit.sh 和 examples.txt)。注意,如果我们在这一步也上传了文件 5 (generator.cpp),我们就会打乱下一步。
- 按创建日期排序。上传文件 10、5 和 8 (tutorial.tex, generator.cpp 和 sol.cpp)。
- 按创建日期排序。上传文件 12 和 1 (validator.cpp 和 checker.cpp)。
还有其他 3 次操作的解决方案。可以证明不存在 2 次操作的解决方案。
在第二个样例测试用例中,我们想要上传所有索引为奇数的文件。无论我们如何排序,甚至不存在两个我们想要上传的文件是连续的情况。因此,每个文件都必须单独上传。