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 完成