309522: CF1693A. Directional Increase

Memory Limit:256 MB Time Limit:1 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Directional Increase

题意翻译

对于一个初始全部元素为 $0$ 的序列,放置一个指针在第一位,定义如下两种操作: 1. (当指针不在最后一位时)指针指向的当前元素加一,指针右移一位。 2. (当指针不在第一位时)指针指向的当前元素减少一,指针左移一位。 需要保证操作结束时指针回到第一位。如下面例子: $\langle\underline{0}, 0,0,0\rangle \rightarrow\langle 1, \underline{0}, 0,0\rangle \rightarrow\langle \underline{1},-1,0,0\rangle \rightarrow\langle 2, \underline{-1}, 0,0\rangle \rightarrow\langle 2,0, \underline{0}, 0\rangle \rightarrow\langle 2, \underline{0},-1,0\rangle \rightarrow\langle\underline{2},-1,-1,0\rangle$ 则最后得到的 $\langle\underline{2},-1,-1,0\rangle$ 就是合法的,每次给定一个序列,问给定序列是否合法。

题目描述

We have an array of length $ n $ . Initially, each element is equal to $ 0 $ and there is a pointer located on the first element. We can do the following two kinds of operations any number of times (possibly zero) in any order: 1. If the pointer is not on the last element, increase the element the pointer is currently on by $ 1 $ . Then move it to the next element. 2. If the pointer is not on the first element, decrease the element the pointer is currently on by $ 1 $ . Then move it to the previous element. But there is one additional rule. After we are done, the pointer has to be on the first element. You are given an array $ a $ . Determine whether it's possible to obtain $ a $ after some operations or not.

输入输出格式

输入格式


The first line contains a single integer $ t $ $ (1\le t\le 1000) $ — the number of test cases. The description of the test cases follows. The first line of each test case contains a single integer $ n $ $ (1\le n\le 2 \cdot 10^5) $ — the size of array $ a $ . The second line of each test case contains $ n $ integers $ a_1, a_2, \ldots, a_n $ ( $ -10^9 \le a_i \le 10^9 $ ) — elements of the array. It is guaranteed that the sum of $ n $ over all test cases doesn't exceed $ 2 \cdot 10^5 $ .

输出格式


For each test case, print "Yes" (without quotes) if it's possible to obtain $ a $ after some operations, and "No" (without quotes) otherwise. You can output "Yes" and "No" in any case (for example, strings "yEs", "yes" and "Yes" will be recognized as a positive response).

输入输出样例

输入样例 #1

7
2
1 0
4
2 -1 -1 0
4
1 -4 3 0
4
1 -1 1 -1
5
1 2 3 4 -10
7
2 -1 1 -2 0 0 0
1
0

输出样例 #1

No
Yes
No
No
Yes
Yes
Yes

说明

In the first test case we can obtain the array after some operations, but the pointer won't be on the first element. One way of obtaining the array in the second test case is shown below. $ \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 $

Input

题意翻译

对于一个初始全部元素为 $0$ 的序列,放置一个指针在第一位,定义如下两种操作: 1. (当指针不在最后一位时)指针指向的当前元素加一,指针右移一位。 2. (当指针不在第一位时)指针指向的当前元素减少一,指针左移一位。 需要保证操作结束时指针回到第一位。如下面例子: $\langle\underline{0}, 0,0,0\rangle \rightarrow\langle 1, \underline{0}, 0,0\rangle \rightarrow\langle \underline{1},-1,0,0\rangle \rightarrow\langle 2, \underline{-1}, 0,0\rangle \rightarrow\langle 2,0, \underline{0}, 0\rangle \rightarrow\langle 2, \underline{0},-1,0\rangle \rightarrow\langle\underline{2},-1,-1,0\rangle$ 则最后得到的 $\langle\underline{2},-1,-1,0\rangle$ 就是合法的,每次给定一个序列,问给定序列是否合法。

Output

**方向性增长**

**题意翻译**

对于一个初始全部元素为 $0$ 的序列,放置一个指针在第一位,定义如下两种操作:

1. (当指针不在最后一位时)指针指向的当前元素加一,指针右移一位。
2. (当指针不在第一位时)指针指向的当前元素减少一,指针左移一位。

需要保证操作结束时指针回到第一位。如下面例子:

$\langle\underline{0}, 0,0,0\rangle \rightarrow\langle 1, \underline{0}, 0,0\rangle \rightarrow\langle \underline{1},-1,0,0\rangle \rightarrow\langle 2, \underline{-1}, 0,0\rangle \rightarrow\langle 2,0, \underline{0}, 0\rangle \rightarrow\langle 2, \underline{0},-1,0\rangle \rightarrow\langle\underline{2},-1,-1,0\rangle$

则最后得到的 $\langle\underline{2},-1,-1,0\rangle$ 就是合法的,每次给定一个序列,问给定序列是否合法。

**题目描述**

我们有一个长度为 $ 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" 将被视为肯定响应)。

**输入输出样例**

**输入样例 #1**
```
7
2
1 0
4
2 -1 -1 0
4
1 -4 3 0
4
1 -1 1 -1
5
1 2 3 4 -10
7
2 -1 1 -2 0 0 0
1
0
```

**输出样例 #1**
```
No
Yes
No
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 $**方向性增长** **题意翻译** 对于一个初始全部元素为 $0$ 的序列,放置一个指针在第一位,定义如下两种操作: 1. (当指针不在最后一位时)指针指向的当前元素加一,指针右移一位。 2. (当指针不在第一位时)指针指向的当前元素减少一,指针左移一位。 需要保证操作结束时指针回到第一位。如下面例子: $\langle\underline{0}, 0,0,0\rangle \rightarrow\langle 1, \underline{0}, 0,0\rangle \rightarrow\langle \underline{1},-1,0,0\rangle \rightarrow\langle 2, \underline{-1}, 0,0\rangle \rightarrow\langle 2,0, \underline{0}, 0\rangle \rightarrow\langle 2, \underline{0},-1,0\rangle \rightarrow\langle\underline{2},-1,-1,0\rangle$ 则最后得到的 $\langle\underline{2},-1,-1,0\rangle$ 就是合法的,每次给定一个序列,问给定序列是否合法。 **题目描述** 我们有一个长度为 $ 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" 将被视为肯定响应)。 **输入输出样例** **输入样例 #1** ``` 7 2 1 0 4 2 -1 -1 0 4 1 -4 3 0 4 1 -1 1 -1 5 1 2 3 4 -10 7 2 -1 1 -2 0 0 0 1 0 ``` **输出样例 #1** ``` No Yes No 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 $

加入题单

上一题 下一题 算法标签: