CF1693A Directional Increase

题目描述

我们有一个长度为 $n$ 的数组。初始时,每个元素都等于 $0$,并且有一个指针位于第一个元素上。 我们可以任意次(可能为零次),以任意顺序进行以下两种操作: 1. 如果指针不在最后一个元素上,将指针当前所在的元素加 $1$,然后将指针移动到下一个元素。 2. 如果指针不在第一个元素上,将指针当前所在的元素减 $1$,然后将指针移动到上一个元素。 但有一个额外的规则:操作结束后,指针必须位于第一个元素上。 给定一个数组 $a$,判断是否可以通过若干次操作得到 $a$。

输入格式

第一行包含一个整数 $t$($1\le t\le 1000$),表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($1\le n\le 2 \cdot 10^5$),表示数组 $a$ 的长度。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($-10^9 \le a_i \le 10^9$),表示数组的元素。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,如果可以通过若干次操作得到数组 $a$,输出 "Yes"(不含引号),否则输出 "No"(不含引号)。 你可以以任意大小写输出 "Yes" 和 "No"(例如 "yEs"、"yes" 和 "Yes" 都会被识别为正面回答)。

说明/提示

在第一个测试用例中,我们可以通过一些操作得到该数组,但指针不会停留在第一个元素上。 第二个测试用例的一种操作方式如下: $\langle \underline{0}, 0, 0, 0\rangle \to \langle 1, \underline{0}, 0, 0 \rangle \to \langle \underline{1}, -1, 0, 0\rangle \to \langle 2, \underline{-1}, 0, 0\rangle \to \langle 2, 0, \underline{0}, 0\rangle \to \langle 2, \underline{0}, -1, 0\rangle \to \langle \underline{2}, -1, -1, 0\rangle$ 由 ChatGPT 4.1 翻译