CF1702F Equate Multisets
题目描述
多重集是指一个集合,其中的元素可以相同,且元素的顺序无关紧要。当且仅当每个值出现的次数相同时,两个多重集才相等。例如,多重集 $\{2,2,4\}$ 和 $\{2,4,2\}$ 是相等的,但多重集 $\{1,2,2\}$ 和 $\{1,1,2\}$ 并不相等。
现在给定两个多重集 $a$ 和 $b$,每个多重集都包含 $n$ 个整数。
在一次操作中,你可以将 $b$ 多重集中的任意一个元素进行如下变换之一:
- 用 $x \cdot 2$ 替换 $x$;
- 或用 $\lfloor \frac{x}{2} \rfloor$(向下取整)替换 $x$。
注意,你不能改变 $a$ 多重集中的元素。
请判断,经过任意次数(可以为 $0$ 次)上述操作后,是否可以使多重集 $b$ 变为与 $a$ 相等。
例如,当 $n=4$,$a=\{4,24,5,2\}$,$b=\{4,1,6,11\}$ 时,答案是 YES。操作过程如下:
- 用 $1 \cdot 2 = 2$ 替换 $1$,得到 $b = \{4,2,6,11\}$。
- 用 $\lfloor \frac{11}{2} \rfloor = 5$ 替换 $11$,得到 $b = \{4,2,6,5\}$。
- 用 $6 \cdot 2 = 12$ 替换 $6$,得到 $b = \{4,2,12,5\}$。
- 用 $12 \cdot 2 = 24$ 替换 $12$,得到 $b = \{4,2,24,5\}$。
- 此时 $a = \{4,24,5,2\}$,$b = \{4,2,24,5\}$,两个多重集相等。
输入格式
输入的第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
每个测试用例包含三行。
第一行为一个整数 $n$($1 \le n \le 2 \times 10^5$),表示多重集 $a$ 和 $b$ 的元素个数。
第二行为 $n$ 个整数:$a_1, a_2, \dots, a_n$($1 \le a_1 \le a_2 \le \dots \le a_n \le 10^9$),表示多重集 $a$ 的元素。注意,元素可以相同。
第三行为 $n$ 个整数:$b_1, b_2, \dots, b_n$($1 \le b_1 \le b_2 \le \dots \le b_n \le 10^9$),表示多重集 $b$ 的元素。注意,元素可以相同。
保证所有测试用例中 $n$ 的总和不超过 $2 \times 10^5$。
输出格式
对于每个测试用例,输出一行:
- 如果可以通过若干次操作使多重集 $b$ 变为 $a$,输出 YES;
- 否则输出 NO。
你可以以任意大小写形式输出 YES 和 NO(例如 yEs, yes, Yes, YES 都视为正答)。
说明/提示
第一个样例的操作过程已在题目描述中给出。
第二个样例中,无法通过允许的操作将 $b$ 多重集中的数变为 $31$。
第三个样例的操作过程如下:
- 用 $2 \cdot 2 = 4$ 替换 $2$,得到 $b = \{4,14,14,26,42\}$。
- 用 $\lfloor \frac{14}{2} \rfloor = 7$ 替换 $14$,得到 $b = \{4,7,14,26,42\}$。
- 用 $\lfloor \frac{26}{2} \rfloor = 13$ 替换 $26$,得到 $b = \{4,7,14,13,42\}$。
- 用 $\lfloor \frac{42}{2} \rfloor = 21$ 替换 $42$,得到 $b = \{4,7,14,13,21\}$。
- 用 $\lfloor \frac{21}{2} \rfloor = 10$ 替换 $21$,得到 $b = \{4,7,14,13,10\}$。
- 此时 $a = \{4,7,10,13,14\}$,$b = \{4,7,14,13,10\}$,两个多重集相等。
由 ChatGPT 4.1 翻译