[GESP202312 六级] 闯关游戏
题目描述
你来到了一个闯关游戏。
这个游戏总共有 N N N 关,每关都有 M M M 个通道,你需要选择一个通道并通往后续关卡。其中,第 i i i 个通道可以让你前进 a i a_i ai 关,也就是说,如果你现在在第 x x x 关,那么选择第 i i i 个通道后,你将直接来到第 x + a i x+a_i x+ai 关(特别地,如果 x + a i ≥ N x + a_i \geq N x+ai≥N,那么你就通关了)。此外,当你顺利离开第 s s s 关时,你还将获得 b s b_s bs 分。
游戏开始时,你在第 0 0 0 关。请问,你通关时最多能获得多少总分。
输入格式
第一行两个整数 N N N, M M M,分别表示关卡数量和每关的通道数量。
接下来一行 M M M 个用单个空格隔开的整数 a 0 , a 1 ⋯ , a M − 1 a_0,a_1\cdots,a_{M-1} a0,a1⋯,aM−1。保证 1 ≤ a i ≤ N 1\le a_i \le N 1≤ai≤N。
接下来一行 N N N 个用单个空格隔开的整数 b 0 , b 1 ⋯ , b N − 1 b_0,b_1\cdots,b_{N-1} b0,b1⋯,bN−1。保证 ∣ b i ∣ ≤ 1 0 5 |b_i|\le 10^5 ∣bi∣≤105。
输出格式
一行一个整数,表示你通关时最多能够获得的分数。
样例 #1
样例输入 #1
6 2
2 3
1 0 30 100 30 30
样例输出 #1
131
样例 #2
样例输入 #2
6 2
2 3
1 0 30 100 30 -1
样例输出 #2
101
提示
样例解释 1
你可以在第 0 0 0 关选择第 1 1 1 个通道,获得 1 1 1 分并来到第 3 3 3 关;随后再选择第 0 0 0 个通道,获得 100 100 100 分并来到第 5 5 5 关;最后任选一个通道,都可以获得 30 30 30 分并通关。如此,总得分为 1 + 100 + 30 = 131 1+100+30=131 1+100+30=131。
样例解释 2
请注意,一些关卡的得分可能是负数。
数据范围
对于 20 % 20\% 20% 的测试点,保证 M = 1 M=1 M=1。
对于 40 % 40\% 40% 的测试点,保证 N ≤ 20 N \le 20 N≤20;保证 M ≤ 2 M\le 2 M≤2。
对于所有测试点,保证 1 ≤ N ≤ 1 0 4 1 \le N \le 10^4 1≤N≤104;保证 1 ≤ M ≤ 100 1 \le M\le 100 1≤M≤100。
Scratch实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g6Wy1x4r-1720324764468)(https://i-blog.csdnimg.cn/direct/c293a9a32ac64950943d9dc26da5e177.png)]
后续
接下来我会不断用scratch来实现信奥比赛中的算法题、Scratch考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容