闯关游戏6级T1 2023.12

闯关游戏6级T1 2023.12

闯关游戏1game.cpp
【问题描述】
你来到了一个闯关游戏。
这个游戏总共有N关,每关都有 M 个通道,你需要选择一个通道并通往后续关卡。其中,第 i 个通道可以让你前 进ai关,也就是说,如果你现在在第 x 关,那么选择第 i 个通道后,你将直接来到第 x +ai 关(特别地,如果x +ai ≥ N,那么你就通关了)。此外,当你顺利离开第s关时,你还将获得bs 分。
游戏开始时,你在第0关。请问,你通关时最多能获得多少总分?
【输入描述】
第一行两个整数 N, M,分别表示关卡数量和每关的通道数量。
接下来一行M 个用单个空格隔开的整数 a0, a1 … aM-1。保证 1 ≤ ai ≤ N。
接下来一行 N 个用单个空格隔开的整数b0, b1,,bN-1。保证|bi| ≤ 10^5。
【输出描述】
一行一个整数,表示你通关时最多能够获得的分数。
【样例输入 1】
6 2
2 3
1 0 30 100 30 30
【样例输出 1】
131
【样例解释 1】 你可以在第0关选择第1个通道,获得 1 分并来到第 3 关;随后再选择第0个通道,获得100 分并来到第 5关;最后任选一个通道,都可以获得30分并通关。如此,总得分为1+100+30 =131。
【样例输入 2】

6 2
2 3
1 0 30 100 30 -1
【样例输出 2】
101
【样例解释 2】
请注意,一些关卡的得分可能是负数。
【数据规模】
对于20%的测试点,保证 M = 1。
对于40%的测试点,保证N ≤ 20 ;保证 M ≤ 2。
对于所有测试点,保证 N ≤ 10000 ;保证 M ≤ 100。

信息

ID
2563
难度
7
分类
(无)
标签
递交数
84
已通过
15
通过率
18%
上传者