CF1333B.Kind Anton

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Kind Anton

题目描述

Boris 再次需要 Anton 的帮助来出一道题。这一次,Anton 需要解决如下问题:

有两个长度为 nn 的整数数组 aabb。已知数组 aa 只包含来自集合 {1,0,1}\{-1, 0, 1\} 的元素。

Anton 可以进行如下操作任意次:

  1. 选择任意一对下标 (i,j)(i, j),满足 1i<jn1 \le i < j \le n。同一对 (i,j)(i, j) 可以被多次选择。
  2. aia_i 加到 aja_j 上。也就是说,第 jj 个元素变为 ai+aja_i + a_j

例如,若给定数组 [1,1,0][1, -1, 0],你可以通过一次操作将其变为 [1,1,1][1, -1, -1][1,0,0][1, 0, 0][1,1,1][1, -1, 1]

Anton 想要预测,是否可以通过若干次(可以为零次)上述操作,将数组 aa 变为数组 bb。你能帮帮他吗?

输入格式

每组测试数据包含多个测试用例。

第一行包含一个整数 tt1t100001 \le t \le 10000),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn1n1051 \le n \le 10^5),表示数组的长度。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1-1 \le a_i \le 1),表示数组 aa 的元素。元素可以重复。

第三行包含 nn 个整数 b1,b2,,bnb_1, b_2, \dots, b_n109bi109-10^9 \le b_i \le 10^9),表示数组 bb 的元素。元素可以重复。

保证所有测试用例中 nn 的总和不超过 10510^5

输出格式

对于每个测试用例,输出一行,如果可以通过上述操作将数组 aa 变为数组 bb,则输出 "YES";否则输出 "NO"。

你可以用任意大小写输出答案。

说明/提示

在第一个测试用例中,我们可以选择 (i,j)=(2,3)(i, j) = (2, 3) 两次,然后再选择 (i,j)=(1,2)(i, j) = (1, 2) 两次。这些操作会将 [1,1,0][1, -1, 0] 变为 [1,1,2][1, -1, -2],再变为 [1,1,2][1, 1, -2]

在第二个测试用例中,我们无法使第二个位置的数字相等。

在第三个测试用例中,我们可以选择 (i,j)=(1,2)(i, j) = (1, 2)4141 次。第四个测试用例同理。

在最后一个测试用例中,不可能将数组 aa 变为数组 bb

由 ChatGPT 4.1 翻译

样例

5
3
1 -1 0
1 1 -2
3
0 1 1
0 2 2
2
1 0
1 41
2
-1 0
-1 -41
5
0 1 -1 1 -1
1 1 -1 1 -1
YES
NO
YES
YES
NO

在线编程 IDE

建议全屏模式获得最佳体验