CF1253A Single Push
题目描述
给定两个长度相同的数组 $a[1 \dots n]$ 和 $b[1 \dots n]$。
你可以进行一次“推送操作”:选择三个整数 $l, r, k$,满足 $1 \le l \le r \le n$ 且 $k > 0$,然后将 $k$ 加到 $a_l, a_{l+1}, \ldots, a_r$ 上。
例如,如果 $a = [3, 7, 1, 4, 1, 2]$,你选择 $(l = 3, r = 5, k = 2)$,则数组 $a$ 变为 $[3, 7, \underline{3, 6, 3}, 2]$。
你最多只能进行一次这样的操作。你能否通过至多一次操作使数组 $a$ 变为数组 $b$?
(我们认为 $a = b$ 当且仅当对于每个 $1 \le i \le n$,都有 $a_i = b_i$。)
输入格式
第一行包含一个整数 $t$($1 \le t \le 20$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 100\,000$),表示数组的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 1000$)。
第三行包含 $n$ 个整数 $b_1, b_2, \ldots, b_n$($1 \le b_i \le 1000$)。
保证所有测试用例中 $n$ 的总和不超过 $10^5$。
输出格式
对于每个测试用例,输出一行,如果可以通过至多一次操作使 $a$ 和 $b$ 相等,则输出 "YES";否则输出 "NO"。可以使用大写或小写字母。
说明/提示
第一个测试用例如题面所述:可以选择 $(l=3, r=5, k=2)$ 进行操作,使 $a$ 变为 $b$。
第二个测试用例,至少需要两次操作才能使 $a$ 变为 $b$。
第三个测试用例,$a$ 和 $b$ 已经相等。
第四个测试用例,不可能使 $a$ 变为 $b$,因为 $k$ 必须为正整数。
由 ChatGPT 4.1 翻译