CF1787D.Game on Axis

普及+/提高

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

There are nn points 1,2,…,n1,2,\ldots,n, each point ii has a number aia_i on it. You're playing a game on them. Initially, you are at point 11. When you are at point ii, take following steps:

  • If 1≤i≤n1\le i\le n, go to i+aii+a_i,
  • Otherwise, the game ends.

Before the game begins, you can choose two integers xx and yy satisfying 1≤x≤n1\le x\le n, −n≤y≤n-n \le y \le n and replace axa_x with yy (set ax:=ya_x := y). Find the number of distinct pairs (x,y)(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 ax≠ya_x\not=y.

有 nn 个点 1,2,…,n1,2,\ldots,n,每个点 ii 上有一个数 aia_i。你在这些点上进行一个游戏。初始时,你位于点 11。当你位于点 ii 时,执行以下步骤:

  • 若 1≤i≤n1\le i\le n,则移动到点 i+aii+a_i;
  • 否则,游戏结束。

在游戏开始前,你可以选择两个整数 xx 和 yy,满足 1≤x≤n1\le x\le n 且 −n≤y≤n-n \le y \le n,并将 axa_x 替换为 yy(即令 ax:=ya_x := y)。求满足“在执行该修改后开始的游戏能在有限步内结束”的不同数对 (x,y)(x,y) 的个数。

注意:你无需满足 ax≠ya_x \ne y。

输入格式

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

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

The second line contains nn integers a1,a2,…,ana_1,a_2,\ldots,a_n (−n≤ai≤n-n \le a_i \le n) — the numbers on the axis.

It's guaranteed that the sum of nn does not exceed 2⋅1052\cdot 10^5.

每个测试包含多个测试用例。第一行包含一个整数 tt(1≤t≤1041\le t\le 10^4)—— 测试用例的数量。

每个测试用例的第一行包含一个整数 nn(1≤n≤2⋅1051\le n\le 2\cdot 10^5)—— 点的数量。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n(−n≤ai≤n-n \le a_i \le n)—— 数轴上的数值。

保证所有测试用例的 nn 之和不超过 2⋅1052\cdot 10^5。

输出格式

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

对于每个测试用例,输出一行,包含一个整数——游戏结束时不同的数对 (x,y)(x,y) 的数量。

输入输出样例

  • 输入#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

说明/提示

In the first test case, the pairs (x,y)(x,y) with which the game ends are (1,−1)(1,-1) and (1,1)(1,1), corresponding to the routes 1→01\rightarrow 0 and 1→21\rightarrow 2. Note that (1,2)(1,2) is invalid since when n=1n=1, y=2y=2 violates −n≤y≤n-n\le y\le n. (1,0)(1,0) is also invalid since you will go from 11 to 11 forever.

In the second test case, the pairs are (1,−2),(1,−1),(1,2),(2,−2),(2,−1),(2,0),(2,1),(2,2)(1,-2),(1,-1),(1,2),(2,-2),(2,-1),(2,0),(2,1),(2,2).

In the fourth test case, the pairs are (1,−2),(1,−1),(1,1),(1,2),(2,−2),(2,1),(2,2)(1,-2),(1,-1),(1,1),(1,2),(2,-2),(2,1),(2,2).

在第一个测试用例中,游戏结束时的数对 (x,y)(x,y) 为 (1,−1)(1,-1) 和 (1,1)(1,1),分别对应路径 1→01\rightarrow 0 和 1→21\rightarrow 2。注意,(1,2)(1,2) 是无效的,因为当 n=1n=1 时,y=2y=2 违反了约束条件 −n≤y≤n-n\le y\le n;(1,0)(1,0) 同样无效,因为此时你会从 11 永远地转移到 11。

在第二个测试用例中,有效的数对为 (1,−2),(1,−1),(1,2),(2,−2),(2,−1),(2,0),(2,1),(2,2)(1,-2),(1,-1),(1,2),(2,-2),(2,-1),(2,0),(2,1),(2,2)。

在第四个测试用例中,有效的数对为 (1,−2),(1,−1),(1,1),(1,2),(2,−2),(2,1),(2,2)(1,-2),(1,-1),(1,1),(1,2),(2,-2),(2,1),(2,2)。

输入解题思路,AI测评打分。不知道怎么写?

首页