CF1787D Game on Axis
题目描述
有 $n$ 个点 $1,2,\ldots,n$,每个点 $i$ 上有一个数字 $a_i$。你要在这些点上玩一个游戏。最开始,你在第 $1$ 个点。当你在第 $i$ 个点时,按如下规则进行:
- 如果 $1\le i\le n$,则移动到 $i+a_i$;
- 否则,游戏结束。
在游戏开始前,你可以选择两个整数 $x$ 和 $y$,满足 $1\le x\le n$,$-n \le y \le n$,并将 $a_x$ 替换为 $y$(即设置 $a_x := y$)。请你计算有多少不同的 $(x,y)$ 对,使得在做出这样的更改后,游戏能够在有限步内结束。
注意,你不需要满足 $a_x\not= y$。
输入格式
每组测试数据包含多组测试用例。第一行包含一个整数 $t$($1\le t\le 10^4$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($1\le n\le 2\cdot 10^5$),表示点的数量。
第二行包含 $n$ 个整数 $a_1,a_2,\ldots,a_n$($-n \le a_i \le n$),表示每个点上的数字。
保证所有测试用例中 $n$ 的总和不超过 $2\cdot 10^5$。
输出格式
对于每个测试用例,输出一行一个整数,表示使得游戏能够结束的不同 $(x,y)$ 对的数量。
说明/提示
在第一个测试用例中,使得游戏能够结束的 $(x,y)$ 对有 $(1,-1)$ 和 $(1,1)$,对应的路径为 $1\rightarrow 0$ 和 $1\rightarrow 2$。注意 $(1,2)$ 是不合法的,因为当 $n=1$ 时,$y=2$ 不满足 $-n\le y\le n$。$(1,0)$ 也是不合法的,因为你会一直从 $1$ 走到 $1$,永远不会结束。
在第二个测试用例中,合法的对有 $(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)$。
由 ChatGPT 4.1 翻译