首页 > 试题广场 >

小美和大富翁

[编程题]小美和大富翁
  • 热度指数:912 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\,\,\,\,\,\,\,\,\,\,小美在玩《大富翁》游戏,游戏中有 n+1 个城市排成一排,编号从 0n ,第 i 个城市上有一个数字 a_i ,表示到达第 i 个城市可以获得 a_i 枚金币。
\,\,\,\,\,\,\,\,\,\,每一轮开始时小美会获得四张卡牌,分别可以跳跃 1、2、3、4 个城市,例如小美可以从城市1跳跃 3 个城市到达城市4。当小美使用完这 4 张卡牌后,会开启新的一轮。
\,\,\,\,\,\,\,\,\,\,初始时,小美拥有 0 枚金币,在任意时刻,小美的金币数量都必须大于等于 0 ,小美想知道她从第 0 个城市出发,到达第 n 个城市最多可以获得多少枚金币。

输入描述:
\,\,\,\,\,\,\,\,\,\,第一行输入一个整数 n\ (1 \leq n \leq 10^5) 表示城市个数。
\,\,\,\,\,\,\,\,\,\,第二行输入 n 个整数 a_1,a_2,\dots,a_n\ (-10^9 \leq a_i \leq 10^9) 表示到达城市1到n可以获得的金币数量(第0个城市无法获得金币)。


输出描述:
\,\,\,\,\,\,\,\,\,\,在一行上输出一个整数表示答案;如果无法到达第 n 个城市,则输出 -1
示例1

输入

10
-1 2 3 4 -9 -9 -1 3 -1 -1

输出

9

说明

最优的方法是:
第 1 步:使用跳跃 3 的卡牌,从 0 跳到 3 ,获得 3 枚金币;
第 2 步:使用跳跃 1 的卡牌,从 3 跳到 4 ,获得 4 枚金币,共有 7 枚金币;
第 3 步:使用跳跃 4 的卡牌,从 4 跳到 8 ,获得 3 枚金币,共有 10 枚金币;
第 4 步:使用跳跃 2 的卡牌,从 8 跳到 10 ,获得 -1 枚金币,共有 9 枚金币。

这道题你会答吗?花几分钟告诉大家答案吧!