杂题——Romantic Glasses
Romantic Glasses
Iulia has $n$ glasses arranged in a line. The $i$-th glass has $a_i$ units of juice in it. Iulia drinks only from odd-numbered glasses, while her date drinks only from even-numbered glasses.
To impress her date, Iulia wants to find a contiguous subarray of these glasses such that both Iulia and her date will have the same amount of juice in total if only the glasses in this subarray are considered. Please help her to do that.
More formally, find out if there exists two indices $l$, $r$ such that $1 \leq l \leq r \leq n$, and $a_l + a_{l + 2} + a_{l + 4} + \dots + a_{r} = a_{l + 1} + a_{l + 3} + \dots + a_{r-1}$ if $l$ and $r$ have the same parity and $a_l + a_{l + 2} + a_{l + 4} + \dots + a_{r - 1} = a_{l + 1} + a_{l + 3} + \dots + a_{r}$ otherwise.
Input
The first line contains a single integer $t$ ($1 \leq t \leq 10^4$) — the number of test cases.
The first line of each test case contains a single integer $n$ ($1 \leq n \leq 2 \cdot 10^5$) — the total number of glasses.
The second line of each test case contains $n$ integers $a_1, \ldots, a_n$ ($1 \leq a_i \leq 10^9$) — the amount of juice in each glass.
The sum of $n$ over all test cases does not exceed $2 \cdot 10^5$.
Output
For each test case, output “YES” if there exists a subarray satisfying the condition, and “NO” otherwise.
You can output the answer in any case (for example, the strings “yEs”, “yes”, “Yes” and “YES” will be recognized as a positive answer).
Example
input
1 |
|
output
1 |
|
Note
In the first test case, Iulia can pick $l=1$ and $r=3$. Then she drinks $a_1+a_3=1+2=3$ units and her date drinks $a_2=3$ units of juice.
In the second test case, Iulia can pick $l=2$ and $r=5$. Then she drinks $a_3+a_5=1+1=2$ units and her date drinks $a_2+a_4=1+1=2$ units of juice.
In the third test case no such contiguous subarray works.
In the fourth test case, Iulia can pick $l=2$ and $r=8$. Then she drinks $a_3+a_5+a_7=11+1+1=13$ units and her date drinks $a_2+a_4+a_6+a_8=2+4+5+2=13$ units of juice.
翻译
尤莉亚 (Iulia) 的 $n$ 眼镜排成一排。第 $i$ 个玻璃杯中有 $a_i$ 单位的果汁。尤莉亚只用奇数杯喝酒,而她的约会对象只用偶数杯喝酒。
为了给她的约会对象留下深刻印象,尤莉亚想要找到这些玻璃杯的连续子数组,这样,如果仅考虑该子数组中的杯子,尤莉亚和她的约会对象将拥有相同数量的果汁。请帮助她做到这一点。
更正式地说,如果 $l$ 和 $r$ 具有相同的奇偶性,则找出是否存在两个索引 $l$ 、 $r$ 使得 $1 \leq l \leq r \leq n$ 和 $a_l + a_{l + 2} + a_{l + 4} + \dots + a_{r} = a_{l + 1} + a_{l + 3} + \dots + a_{r-1}$ 具有相同的奇偶性,否则为 $a_l + a_{l + 2} + a_{l + 4} + \dots + a_{r - 1} = a_{l + 1} + a_{l + 3} + \dots + a_{r}$ 。
输入
第一行包含一个整数 $t$ ( $1 \leq t \leq 10^4$ ) - 测试用例的数量。
每个测试用例的第一行包含一个整数 $n$ ( $1 \leq n \leq 2 \cdot 10^5$ ) - 眼镜总数。
每个测试用例的第二行包含 $n$ 整数 $a_1, \ldots, a_n$ ( $1 \leq a_i \leq 10^9$ ) - 每杯果汁的量。
所有测试用例的 $n$ 之和不超过 $2 \cdot 10^5$ 。
输出
对于每个测试用例,如果存在满足条件的子数组,则输出“YES”,否则输出“NO”。
您可以在任何情况下输出答案(例如,字符串“yEs”、“yes”、“Yes”和“YES”将被识别为肯定答案)。
Example
input
1 |
|
output
1 |
|
笔记
在第一个测试用例中,Iulia 可以选择 $l=1$ 和 $r=3$ 。然后她喝了 $a_1+a_3=1+2=3$ 单位,她的约会对象喝了 $a_2=3$ 单位果汁。
在第二个测试用例中,Iulia 可以选择 $l=2$ 和 $r=5$ 。然后她喝了 $a_3+a_5=1+1=2$ 单位,她的约会对象喝了 $a_2+a_4=1+1=2$ 单位果汁。
在第三个测试用例中,没有这样的连续子数组起作用。
在第四个测试用例中,Iulia 可以选择 $l=2$ 和 $r=8$ 。然后她喝了 $a_3+a_5+a_7=11+1+1=13$ 单位,她的约会对象喝了 $a_2+a_4+a_6+a_8=2+4+5+2=13$ 单位果汁。
思路
问题大概可以描述为这样一个问题:给定一个数组,判断是否存在一个区间使得其中所有奇数下标元素之和等于偶数下标元素之和.我们可以对数组重新赋值,奇数位赋值为负数,偶数位不变。这样我们后面求前缀和,只要看有没有一段区间和为零的。
代码
1 |
|