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 翻译