第33150题 程序题
大富翁游戏:计算获胜所需最少初始金币

小明很喜欢玩大富翁游戏,这个游戏的规则如下:

  1. 游戏地图是有 N 个格子,分别编号从 1 到 N。玩家一开始位于 1 号格子。
  2. 地图的每个格子上都有事件,事件有以下两种类型: A)罚款 x 枚金币。如果 x 为负数,则表示获得 -x 枚金币; B)强制前进 y 个格子(输入数据保证,前进后不会越过 N 号格子)。
  3. 游戏开始时首先触发 1 号格子的事件,然后开始玩家回合。
  4. 玩家每回合可以选择前进 1 或 2 个格子(不可以不移动,不可以越过 N 号格子),之后触发停留的格子的事件。 4.1 如果触发的是 A 类事件,进行罚款。若罚款后金币数小于 0,则游戏失败,否则继续下一个回合; 4.2 如果触发的是 B 类事件,强行前进。 若强行前进后所在的格子为 A 类事件,则按照 4.1 的规则触发 A 类事件;若为 B 类事件,则当前回合不再触发 B 类事件。
  5. 如果玩家回合结束时,处在 N 号格子,且金币数大于等于 0,则游戏胜利。

可以看出,如果玩家一开始有足够多的金币,总是能够通过合理选择前进方案获得胜利。小明想知道,一开始最少需要多少金币,才有可能取得游戏胜利?

输入描述

第一行给出正整数 N,为地图的长度。 接下来 N 行,分别描述从 1 到 N 号格子的事件:A x 或者 B y

输出描述

一个整数,要取得游戏胜利,最少需要的金币数。

输入样例

7
A -2
A 3
B 1
A 2
A 4
A 2
A 0

输出样例

2

提示

100%数据满足 $2 ≤ N ≤ 128$,$-8 ≤ x ≤ 8$,$0 ≤ y ≤ 2$。

编辑模式
程序运行统计
暂无判题统计
提交0次 正确率0.00%
答案解析