P14457 [ICPC 2025 Xi'an R] Killing Bits

题目描述

给定两个长度相同的数组 $a$ 和 $b$,它们都由 $n$ 个非负整数组成。你可以对数组 $a$ 执行任意次数(可能为零次)以下操作: - 首先,选择一个 $0, 1, \ldots, n - 1$ 的排列 $p$; - 然后,对于每个 $1 \le i \le n$,执行赋值操作 $a_i \gets a_i \operatorname{\&} p_i$,其中 $\&$ 表示按位与运算(bitwise AND)。 你需要判断,是否有可能通过若干次(可能为零次)这样的操作,将数组 $a$ 转换为数组 $b$。

输入格式

输入包含多个测试用例。 第一行包含一个整数 $t$($1 \leq t \leq 10^4$),表示测试用例的数量。 对于每个测试用例: - 第一行包含一个整数 $n$($1 \le n \le 5 \cdot 10^4$),表示数组 $a$ 和 $b$ 的长度; - 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \le a_i \le n - 1$),表示数组 $a$ 的元素; - 第三行包含 $n$ 个整数 $b_1, b_2, \ldots, b_n$($0 \le b_i \le n - 1$),表示数组 $b$ 的元素。 保证所有测试用例中 $n$ 的总和不超过 $5 \cdot 10^4$。

输出格式

对于每个测试用例,输出一行结果: - 如果可以将 $a$ 转换为 $b$,输出 `Yes`; - 否则输出 `No`。 输出时大小写不敏感。例如,`yEs`、`yes`、`Yes` 和 `YES` 都会被视为正确回答。

说明/提示

在第一个测试用例中,我们至少需要执行一次操作才能将 $a$ 转换为 $b$。 注意到由于 $a_1 = 0$,所以无论选择怎样的排列 $p$,都有 $a_1 \operatorname{\&} p_1 = 0$。 然而,$b_1 > 0$,因此无论怎样选择排列,$a_1$ 都不可能变为 $b_1$。因此答案是 `No`。 在第二个测试用例中,可以选择排列 $p = [2, 0, 3, 1, 4]$。执行操作后,$a$ 被转换为 $b$。 在第三个测试用例中,$a$ 与 $b$ 相等,因此无需执行任何操作。 翻译由 ChatGPT-5 完成