CF1333B Kind Anton
题目描述
Boris 再次需要 Anton 的帮助来出一道题。这一次,Anton 需要解决如下问题:
有两个长度为 $n$ 的整数数组 $a$ 和 $b$。已知数组 $a$ 只包含来自集合 $\{-1, 0, 1\}$ 的元素。
Anton 可以进行如下操作任意次:
1. 选择任意一对下标 $(i, j)$,满足 $1 \le i < j \le n$。同一对 $(i, j)$ 可以被多次选择。
2. 将 $a_i$ 加到 $a_j$ 上。也就是说,第 $j$ 个元素变为 $a_i + a_j$。
例如,若给定数组 $[1, -1, 0]$,你可以通过一次操作将其变为 $[1, -1, -1]$、$[1, 0, 0]$ 或 $[1, -1, 1]$。
Anton 想要预测,是否可以通过若干次(可以为零次)上述操作,将数组 $a$ 变为数组 $b$。你能帮帮他吗?
输入格式
每组测试数据包含多个测试用例。
第一行包含一个整数 $t$($1 \le t \le 10000$),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 10^5$),表示数组的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($-1 \le a_i \le 1$),表示数组 $a$ 的元素。元素可以重复。
第三行包含 $n$ 个整数 $b_1, b_2, \dots, b_n$($-10^9 \le b_i \le 10^9$),表示数组 $b$ 的元素。元素可以重复。
保证所有测试用例中 $n$ 的总和不超过 $10^5$。
输出格式
对于每个测试用例,输出一行,如果可以通过上述操作将数组 $a$ 变为数组 $b$,则输出 "YES";否则输出 "NO"。
你可以用任意大小写输出答案。
说明/提示
在第一个测试用例中,我们可以选择 $(i, j) = (2, 3)$ 两次,然后再选择 $(i, j) = (1, 2)$ 两次。这些操作会将 $[1, -1, 0]$ 变为 $[1, -1, -2]$,再变为 $[1, 1, -2]$。
在第二个测试用例中,我们无法使第二个位置的数字相等。
在第三个测试用例中,我们可以选择 $(i, j) = (1, 2)$ 共 $41$ 次。第四个测试用例同理。
在最后一个测试用例中,不可能将数组 $a$ 变为数组 $b$。
由 ChatGPT 4.1 翻译