#P5592. [GESP202312六级] 闯关游戏

[GESP202312六级] 闯关游戏

Description

# 题目背景 2023 年 12 月 GESP C++ 六级编程第 1 题 # 题目描述 你来到了一个闯关游戏。 这个游戏总共有 $N$ 关,每关都有 $M$ 个通道,你需要选择一个通道并通往后续关卡。其中,第 $i$ 个通道可以让你前进 $a_{i}$ 关,也就是说,如果你现在在第 $x$ 关,那么选择第 $i$ 个通道后,你将直接来到第 $x + a_{i}$ 关(特别地,如果 $x + a_{i} \geq N$,那么你就通关了)。此外,当你顺利离开第 $s$ 关时,你还将获得 $b_{s}$ 分。 游戏开始时,你在第 $0$ 关。请问,你通关时最多能获得多少总分? # 输入格式 第一行两个整数 $N, M$ ,分别表示关卡数量和每关的通道数量。 接下来一行 $M$ 个用单个空格隔开的整数 $a_{0}, a_{1}, ..., a_{M-1}$ 。 接下来一行 $N$ 个用单个空格隔开的整数 $b_{0}, b_{1}, ..., b_{N-1}$ 。 # 输出格式 一行一个整数,表示你通关时最多能够获得的分数。 # 样例 ```input1 6 2 2 3 1 0 30 100 30 30 ``` ```output1 131 ``` ```input2 6 2 2 3 1 0 30 100 30 -1 ``` ```output2 101 ``` # 提示 ## 样例1解释 你可以在第 $0$ 关选择第 $1$ 个通道,获得 $1$ 分并来到第 $3$ 关;随后再选择第 $0$ 个通道,获得 $100$ 分并来到第 $5$ 关;最后任选一个通道,都可以获得 $30$ 分并通关。如此,总得分为 $1 + 100 + 30 = 131$ 。 ## 样例2解释 请注意,一些关卡的得分可能是负数。 ## 数据范围 对于 $20 \%$ 的测试点,保证 $M = 1$ 。 对于 $40 \%$ 的测试点,保证 $N \leq 20$;保证 $M \leq 2$ 。 对于 $100 \%$ 测试点,保证 $N \leq 10^{4}$ ;保证 $M \leq 100$;保证 $1 \leq a_{i} \leq N, |b_{i}| \leq 10^{5}$ 。