CF1556E Equilibrium

题目描述

![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1556E/82dac8544603b5a29531fd9591e7750ab2f3a8ad.png)William 有两个数组 $a$ 和 $b$,每个数组包含 $n$ 个元素。 对于这两个数组的某些区间 $l..r$,William 想知道是否可以通过一种“平衡操作”使得这些区间内的元素值相等。具体来说,如果对于每个 $i$ 满足 $l \leq i \leq r$,都有 $a_i = b_i$,则认为区间已被平衡。 一次平衡操作需要选择偶数个下标,满足 $l \leq pos_1 < pos_2 < \dots < pos_k \leq r$。然后,将数组 $a$ 中下标为 $pos_1, pos_3, pos_5, \dots$ 的元素加一,将数组 $b$ 中下标为 $pos_2, pos_4, pos_6, \dots$ 的元素加一。 William 想知道,对于每个区间,是否可以通过若干次平衡操作使得两个数组在该区间内的元素值相等,以及最少需要多少次操作。注意,每个区间的操作是独立进行的。

输入格式

第一行包含两个整数 $n$ 和 $q$($2 \leq n \leq 10^5$,$1 \leq q \leq 10^5$),分别表示数组 $a$ 和 $b$ 的长度以及区间的数量。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \leq a_i \leq 10^9$)。 第三行包含 $n$ 个整数 $b_1, b_2, \dots, b_n$($0 \leq b_i \leq 10^9$)。 接下来的 $q$ 行,每行包含两个整数 $l_i$ 和 $r_i$($1 \leq l_i < r_i \leq n$),表示区间的左右端点。

输出格式

对于每个区间,输出一个整数——使得两个数组在该区间内元素值相等所需的最小平衡操作次数。如果无法实现,输出 $-1$。

说明/提示

对于第一个区间 $2$ 到 $6$,可以进行一次操作,选择 $pos = [2, 3, 5, 6]$,操作后数组变为:$a = [0, 2, 2, 9, 4, 2, 7, 5]$,$b = [2, 2, 2, 9, 4, 2, 5, 8]$。此时区间 $2$ 到 $6$ 内的数组元素已相等。 对于第二个区间 $1$ 到 $7$,可以进行以下三次操作: 1. $pos = [1, 3, 5, 6]$ 2. $pos = [1, 7]$ 3. $pos = [2, 7]$ 操作后,数组变为:$a = [2, 2, 2, 9, 4, 2, 7, 5]$,$b = [2, 2, 2, 9, 4, 2, 7, 8]$。此时区间 $1$ 到 $7$ 内的数组元素已相等。 对于第三个区间 $2$ 到 $4$,可以进行一次操作,选择 $pos = [2, 3]$,操作后数组变为:$a = [0, 2, 2, 9, 3, 2, 7, 5]$,$b = [2, 2, 2, 9, 4, 1, 5, 8]$。此时区间 $2$ 到 $4$ 内的数组元素已相等。 对于第四和第五个区间无法实现平衡。 由 ChatGPT 4.1 翻译