CF1333B.Kind Anton

普及-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Once again, Boris needs the help of Anton in creating a task. This time Anton needs to solve the following problem:

There are two arrays of integers aa and bb of length nn. It turned out that array aa contains only elements from the set −1,0,1{-1, 0, 1}.

Anton can perform the following sequence of operations any number of times:

  1. Choose any pair of indexes (i,j)(i, j) such that 1≤i<j≤n1 \le i \lt j \le n. It is possible to choose the same pair (i,j)(i, j) more than once.
  2. Add aia_i to aja_j. In other words, jj-th element of the array becomes equal to ai+aja_i + a_j.

For example, if you are given array [1,−1,0][1, -1, 0], you can transform it only to [1,−1,−1][1, -1, -1], [1,0,0][1, 0, 0] and [1,−1,1][1, -1, 1] by one operation.

Anton wants to predict if it is possible to apply some number (zero or more) of these operations to the array aa so that it becomes equal to array bb. Can you help him?

再一次,鲍里斯需要安东帮忙设计一道编程题。这一次,安东需要解决如下问题:

给定两个长度为 nn 的整数数组 aa 和 bb。已知数组 aa 中的所有元素均属于集合 {−1,0,1}\{-1, 0, 1\}。

安东可以任意多次执行以下操作序列:

  1. 选择任意一对下标 (i,j)(i, j),满足 1≤i<j≤n1 \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]。

安东希望预先判断:能否对数组 aa 执行若干次(可以是零次)上述操作,使其恰好变为数组 bb?你能帮他解决这个问题吗?

输入格式

Each test contains multiple test cases.

The first line contains the number of test cases tt (1≤t≤100001 \le t \le 10000). The description of the test cases follows.

The first line of each test case contains a single integer nn (1≤n≤1051 \le n \le 10^5) — the length of arrays.

The second line of each test case contains nn integers a1,a2,…,ana_1, a_2, \dots, a_n (−1≤ai≤1-1 \le a_i \le 1) — elements of array aa. There can be duplicates among elements.

The third line of each test case contains nn integers b1,b2,…,bnb_1, b_2, \dots, b_n (−109≤bi≤109-10^9 \le b_i \le 10^9) — elements of array bb. There can be duplicates among elements.

It is guaranteed that the sum of nn over all test cases doesn't exceed 10510^5.

每个测试包含多个测试用例。

第一行包含测试用例的数量 tt(1≤t≤100001 \le t \le 10000)。随后是各测试用例的描述。

每个测试用例的第一行包含一个整数 nn(1≤n≤1051 \le n \le 10^5)—— 数组的长度。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(−1≤ai≤1-1 \le a_i \le 1)—— 数组 aa 的元素。元素中可能有重复。

每个测试用例的第三行包含 nn 个整数 b1,b2,…,bnb_1, b_2, \dots, b_n(−109≤bi≤109-10^9 \le b_i \le 10^9)—— 数组 bb 的元素。元素中可能有重复。

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

输出格式

For each test case, output one line containing "YES" if it's possible to make arrays aa and bb equal by performing the described operations, or "NO" if it's impossible.

You can print each letter in any case (upper or lower).

对于每个测试用例,如果可以通过执行所描述的操作使数组 aa 和 bb 相等,则输出一行 "YES";否则(即不可能实现)输出 "NO"。

你可以以任意大小写形式输出每个字母(大写或小写)。

输入输出样例

  • 输入#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

    输出#1

    YES
    NO
    YES
    YES
    NO

说明/提示

In the first test-case we can choose (i,j)=(2,3)(i, j)=(2, 3) twice and after that choose (i,j)=(1,2)(i, j)=(1, 2) twice too. These operations will transform [1,−1,0]→[1,−1,−2]→[1,1,−2][1, -1, 0] \to [1, -1, -2] \to [1, 1, -2]

In the second test case we can't make equal numbers on the second position.

In the third test case we can choose (i,j)=(1,2)(i, j)=(1, 2) 4141 times. The same about the fourth test case.

In the last lest case, it is impossible to make array aa equal to the array bb.

在第一个测试用例中,我们可以选择 (i,j)=(2,3)(i, j)=(2, 3) 两次,之后再选择 (i,j)=(1,2)(i, j)=(1, 2) 两次。这些操作将使数组 [1,−1,0]→[1,−1,−2]→[1,1,−2][1, -1, 0] \to [1, -1, -2] \to [1, 1, -2]。

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

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

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

输入解题思路,AI测评打分。不知道怎么写?

首页