题库练习 Game on Axis
← 上一题 下一题 →

A15734 | Game on Axis

时间限制1s
内存限制256MB
通过 / 提交0/0

题目描述

There are $n$ points $1,2,\ldots,n$ , each point $i$ has a number $a_i$ on it. You're playing a game on them. Initially, you are at point $1$ . When you are at point $i$ , take following steps:

- If $1\le i\le n$ , go to $i+a_i$ ,
- Otherwise, the game ends.

Before the game begins, you can choose two integers $x$ and $y$ satisfying $1\le x\le n$ , $-n \le y \le n$ and replace $a_x$ with $y$ (set $a_x := y$ ). Find the number of distinct pairs $(x,y)$ such that the game that you start after making the change ends in a finite number of steps.

Notice that you do not have to satisfy $a_x\not=y$ .

输入格式

Each test contains multiple test cases. The first line contains an integer $t$ ( $1\le t\le 10^4)$ — the number of test cases.

The first line of each test case contains one integer $n$ ( $1\le n\le 2\cdot 10^5$ ) — the number of points.

The second line contains $n$ integers $a_1,a_2,\ldots,a_n$ ( $-n \le a_i \le n$ ) — the numbers on the axis.

It's guaranteed that the sum of $n$ does not exceed $2\cdot 10^5$ .

输出格式

For each test case, print a line containing a single integer — the number of distinct pairs $(x,y)$ with which the game ends.

输入输出样例

输入 #1
9
1
0
2
-1 0
2
1 -1
2
1 1
3
-1 -2 -1
3
1 -2 -1
4
-1 4 -2 1
5
1 1 1 1 -4
5
1 1 1 1 1
输出 #1
2
8
6
7
20
17
34
30
40
C++ 编辑器
输入
输出