CF1690B Array Decrements

题目描述

Kristina 有两个数组 $a$ 和 $b$,每个数组包含 $n$ 个非负整数。她可以对数组 $a$ 执行如下操作任意次: - 对数组中每个非零元素进行减一操作,即将每个 $a_i > 0$ 的元素替换为 $a_i - 1$($1 \le i \le n$)。如果 $a_i$ 原本为 $0$,则其值不变。 请判断 Kristina 是否可以通过若干次操作(也可以不操作),使得数组 $a$ 变为数组 $b$。换句话说,是否存在某个操作次数,使得对每个 $1 \le i \le n$,都有 $a_i = b_i$。 例如,设 $n = 4$,$a = [3, 5, 4, 1]$,$b = [1, 3, 2, 0]$。此时,她可以执行两次操作: - 第一次操作后,$a = [2, 4, 3, 0]$; - 第二次操作后,$a = [1, 3, 2, 0]$。 因此,只需两次操作即可将数组 $a$ 变为数组 $b$。

输入格式

输入的第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 接下来是每个测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($1 \le n \le 5 \cdot 10^4$)。 每个测试用例的第二行包含 $n$ 个非负整数 $a_1, a_2, \dots, a_n$($0 \le a_i \le 10^9$)。 每个测试用例的第三行包含 $n$ 个非负整数 $b_1, b_2, \dots, b_n$($0 \le b_i \le 10^9$)。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出一行: - 如果可以通过若干次操作将数组 $a$ 变为数组 $b$,输出 YES; - 否则输出 NO。 你可以用任意大小写形式输出 YES 和 NO(例如,yEs、yes、Yes 和 YES 都会被识别为肯定回答)。

说明/提示

第一个测试用例已在题目描述中分析。 第二个测试用例中,只需对数组 $a$ 执行一次操作即可。 第三个测试用例中,不可能将数组 $a$ 变为数组 $b$。 由 ChatGPT 4.1 翻译