#36. 闯关游戏
闯关游戏
闯关游戏
你来到了一个闯关游戏。这个游戏总共有 n 关,每关都有 m 个通道,你需要选择一个通道并通往后续关卡。其中,第 j 个通道可以让你前进 a_j 关,也就是说,如果你现在在第 i 关,那么选择第 j 个通道后,你将直接来到第 i+a_j 关(特别地,如果 i+a_j ≥ n,那么你就通关了)。此外,当你顺利离开第 i 关时,你还将获得 b_i 分。 游戏开始时,你在第 0 关。请问,你通关时最多能获得多少总分?
输入格式
第一行两个整数 n、m,分别表示关卡数量和每关的通道数量。 接下来一行 m 个用单个空格隔开的整数 a_1..a_m(1≤a_j≤n),表示每个通道能前进的关数。 接下来一行 n 个用单个空格隔开的整数 b_0..b_{n-1}(|b_i|≤10^5),表示离开每一关获得的分数。
输出格式
一行一个整数,表示你通关时最多能够获得的分数。
样例
输入样例 1
6 2
2 3
1 0 30 100 30 30
输出样例 1
131
输入样例 2
6 2
2 3
1 0 30 100 30 -1
输出样例 2
101
数据范围
对于 20% 的测试点,保证 m = 1;对于 40% 的测试点,保证 n ≤ 20,m ≤ 2;对于所有测试点,保证 1 ≤ a_j ≤ n,n ≤ 10^4,m ≤ 100。
相关
在下列比赛中: