CF1672F2 Checker for Array Shuffling

题目描述

oolimry 有一个长度为 $n$ 的数组 $a$,他非常喜欢这个数组。今天,你把他的数组变成了 $b$,$b$ 是 $a$ 的一个排列,这让他很伤心。 因为 oolimry 只是一只鸭子,他只能通过以下操作来恢复他的数组: - 选择两个整数 $i, j$,满足 $1 \leq i, j \leq n$。 - 交换 $b_i$ 和 $b_j$。 数组 $b$ 的“伤心值”定义为将 $b$ 变回 $a$ 所需的最少操作次数。 给定数组 $a$ 和 $b$,其中 $b$ 是 $a$ 的一个排列,判断 $b$ 是否在所有 $a$ 的排列中具有最大的伤心值。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 $t$($1 \leq t \leq 10^4$),表示测试用例的数量。接下来是每组测试用例的描述。 每组测试用例的第一行包含一个整数 $n$($1 \leq n \leq 2 \cdot 10^5$),表示数组的长度。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq n$),表示数组 $a$ 的元素。 第三行包含 $n$ 个整数 $b_1, b_2, \ldots, b_n$($1 \leq b_i \leq n$),表示数组 $b$ 的元素。 保证 $b$ 是 $a$ 的一个排列。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每组测试用例,如果 $b$ 在所有 $a$ 的排列中具有最大的伤心值,输出 "AC"(不含引号);否则输出 "WA"(不含引号)。

说明/提示

在第一个测试用例中,数组 $[1,2]$ 的伤心值为 $1$。我们可以通过一次操作 $(i,j)=(1,2)$ 将 $[1,2]$ 变为 $[2,1]$。 在第二个测试用例中,数组 $[3,3,2,1]$ 的伤心值为 $2$。我们可以通过两次操作 $(i,j)=(1,4)$ 和 $(i,j)=(2,3)$ 将 $[3,3,2,1]$ 变为 $[1,2,3,3]$。 在第三个测试用例中,数组 $[2,1]$ 的伤心值为 $0$。 在第四个测试用例中,数组 $[3,2,3,1]$ 的伤心值为 $1$。 由 ChatGPT 4.1 翻译