CF1036D Vasya and Arrays
题目描述
Vasya 有两个数组 $A$ 和 $B$,长度分别为 $n$ 和 $m$。
他可以对数组执行如下操作任意次(也可以不执行):选择数组中的某个连续子段,并将其替换为一个元素,该元素等于该子段所有元素的和。例如,从数组 $[1, 10, 100, 1000, 10000]$ 可以得到数组 $[1, 1110, 10000]$,从数组 $[1, 2, 3]$ 可以得到数组 $[6]$。
当且仅当两个数组长度相同,且对于每个合法的 $i$,都有 $A_i = B_i$ 时,认为数组 $A$ 和 $B$ 相等。
Vasya 想对数组 $A$ 和 $B$ 分别进行若干次上述操作,使得最终数组 $A$ 和 $B$ 相等,并且最终数组的长度尽可能大。
请你帮助 Vasya 求出最终数组可能达到的最大长度。如果无法使两个数组相等,输出 $-1$。
输入格式
第一行包含一个整数 $n~(1 \le n \le 3 \times 10^5)$,表示第一个数组的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \cdots, a_n~(1 \le a_i \le 10^9)$,表示数组 $A$ 的元素。
第三行包含一个整数 $m~(1 \le m \le 3 \times 10^5)$,表示第二个数组的长度。
第四行包含 $m$ 个整数 $b_1, b_2, \cdots, b_m~(1 \le b_i \le 10^9)$,表示数组 $B$ 的元素。
输出格式
输出一个整数,表示对数组 $A$ 和 $B$ 分别进行若干次操作后,使它们相等时可能达到的最大长度。
如果无法使两个数组相等,输出 $-1$。
说明/提示
由 ChatGPT 4.1 翻译