思路:
arr 里 每个 num 存两个参数[max, org]分别是 经迭代后最大的数 和 未经迭代的原来的数
一次循环将最大的数留到后面, 最后将溢出的值 经比较 存在一个 max_里
将 前面迭代过的 和 后面为迭代的 进行比较, 在后面迭代的空位里 留下 比较后更大的数值
for _ in range(int(input())):
n = int(input())
arr = list(map(int, input().split()))
max_ = 0
for i in range(len(arr)):
arr[i] = [arr[i], arr[i]]
for idx, num in enumerate(arr):
if idx + num[1] > n - 1:#out
max_ = max(num[0], max_)
else:#in
arr[num[1] + idx][0] = max(arr[num[1] + idx][1] + num[0], arr[num[1] + idx][0])
print(max_)