实训无#5.8数组跳远

您所在的位置:网站首页 跳远鞋钉的选择 实训无#5.8数组跳远

实训无#5.8数组跳远

2024-07-14 13:35| 来源: 网络整理| 查看: 265

【问题描述】

        对于一个具有 n 个元素的数组 a , 执行以下操作:

首先,选择下标 i (1 ≤ i ≤n)—— 设置为数组的开始位置,放一个标记在 i 处(在值 ai 的地方)

当 i ≤ n 时,你的得分将增加 ai ,且将标记向右移动 ai 个位置,也就是说用 i +ai 替换 i ,继续这个过程

如果 i >n,则结束操作

       例如, 如果 n = 5且a=[7, 3, 1, 2, 3],则可以进行以下操作

选择 i = 1,操作过程为

,最后得分为 a1 = 7

选择 i = 2,操作过程为

, 最后得分为 a2 + a5  = 6

选择 i = 3,操作过程为

, 最后得分为 a3 + a4  = 3

选择 i = 4,操作过程为

, 最后得分为 a4  = 2

选择 i = 5,操作过程为

, 最后得分为 a5  = 3

           请选择合适的开始位置,使得经过上述操作后可获得最大的分数。

【输入形式】

           输入的第一行为一个整数 t (1≤ t ≤ 104),表示测试用例的组数。

           每个测试用例的第一行为一个整数 n (1≤ n ≤ 2×105),表示数组 a 的元素个数

           接下来一行包含 n 个整数 a1、a2、...、an (1 ≤ ai ≤ 109),表示数组 a 的元素

【输出形式】

         对于每个测试用例,输出独立一行,表示选择合适的开始位置后经过上述操作可以获得的最大分数。

【样例输入】

4 5 7 3 1 2 3 3 2 1 4 6 2 1000 2 3 995 1 5 1 1 1 1 1

【样例输出】

7 6 1000 5

【样例说明】

来源:1472C

#include using namespace std; int main() { int t, n; cin >> t; long f, max, c; while (t--) { cin >> n; int a[n]; for (int i=0; i> a[i]; max=0; for (int i=0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3