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 a and b of length n. It turned out that array a contains only elements from the set −1,0,1.
Anton can perform the following sequence of operations any number of times:
- Choose any pair of indexes (i,j) such that 1≤i<j≤n. It is possible to choose the same pair (i,j) more than once.
- Add ai to aj. In other words, j-th element of the array becomes equal to ai+aj.
For example, if you are given array [1,−1,0], you can transform it only to [1,−1,−1], [1,0,0] and [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 a so that it becomes equal to array b. Can you help him?
再一次,鲍里斯需要安东帮忙设计一道编程题。这一次,安东需要解决如下问题:
给定两个长度为 n 的整数数组 a 和 b。已知数组 a 中的所有元素均属于集合 {−1,0,1}。
安东可以任意多次执行以下操作序列:
- 选择任意一对下标 (i,j),满足 1≤i<j≤n。同一对 (i,j) 可被重复选择。
- 将 ai 加到 aj 上。换言之,数组的第 j 个元素变为 ai+aj。
例如,若给定数组 [1,−1,0],则通过一次操作,它只能被变换为 [1,−1,−1]、[1,0,0] 或 [1,−1,1]。
安东希望预先判断:能否对数组 a 执行若干次(可以是零次)上述操作,使其恰好变为数组 b?你能帮他解决这个问题吗?
输入格式
Each test contains multiple test cases.
The first line contains the number of test cases t (1≤t≤10000). The description of the test cases follows.
The first line of each test case contains a single integer n (1≤n≤105) — the length of arrays.
The second line of each test case contains n integers a1,a2,…,an (−1≤ai≤1) — elements of array a. There can be duplicates among elements.
The third line of each test case contains n integers b1,b2,…,bn (−109≤bi≤109) — elements of array b. There can be duplicates among elements.
It is guaranteed that the sum of n over all test cases doesn't exceed 105.
每个测试包含多个测试用例。
第一行包含测试用例的数量 t(1≤t≤10000)。随后是各测试用例的描述。
每个测试用例的第一行包含一个整数 n(1≤n≤105)—— 数组的长度。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(−1≤ai≤1)—— 数组 a 的元素。元素中可能有重复。
每个测试用例的第三行包含 n 个整数 b1,b2,…,bn(−109≤bi≤109)—— 数组 b 的元素。元素中可能有重复。
保证所有测试用例的 n 之和不超过 105。
输出格式
For each test case, output one line containing "YES" if it's possible to make arrays a and b equal by performing the described operations, or "NO" if it's impossible.
You can print each letter in any case (upper or lower).
对于每个测试用例,如果可以通过执行所描述的操作使数组 a 和 b 相等,则输出一行 "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) twice and after that choose (i,j)=(1,2) twice too. These operations will transform [1,−1,0]→[1,−1,−2]→[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) 41 times. The same about the fourth test case.
In the last lest case, it is impossible to make array a equal to the array b.
在第一个测试用例中,我们可以选择 (i,j)=(2,3) 两次,之后再选择 (i,j)=(1,2) 两次。这些操作将使数组 [1,−1,0]→[1,−1,−2]→[1,1,−2]。
在第二个测试用例中,我们无法使第二个位置上的数字相等。
在第三个测试用例中,我们可以选择 (i,j)=(1,2) 共 41 次。第四个测试用例同理。
在最后一个测试用例中,不可能将数组 a 变为与数组 b 相等。
输入解题思路,AI测评打分。不知道怎么写?