CF1854B Earn or Unlock
题目描述
Andrea 正在玩 Tanto Cuore 游戏。
他有一叠 $n$ 张牌,从上到下依次为 $a_1, \ldots, a_n$。每张牌可以是锁定或未锁定状态。最开始,只有最上面的一张牌是未锁定的。
游戏按回合进行。在每一回合,Andrea 可以选择一张未锁定的牌——该牌上的数值为 $v$——并且执行以下两种操作之一:
1. 解锁从顶部开始的前 $v$ 张锁定的牌。如果牌堆中锁定的牌少于 $v$ 张,则解锁所有锁定的牌。
2. 获得 $v$ 点胜利分数。
无论选择哪种操作,操作后都要将该牌从牌堆中移除。
当牌堆中剩下的所有牌都是锁定状态,或者牌堆中已经没有牌时,游戏结束。
Andrea 最多能获得多少胜利分数?
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 10^5$),表示牌堆中牌的数量。
第二行包含 $n$ 个整数 $a_1, \ldots, a_n$($0 \leq a_1, \ldots, a_n \leq n$),表示牌堆中每张牌的数值。
输出格式
输出一个整数,表示 Andrea 最多能获得的胜利分数。
说明/提示
在第一个样例中,牌堆初始状态为 \[未锁定,锁定\]。然后,Andrea 用第一张牌解锁了第二张牌。接着,他用第二张牌获得了 $2$ 分胜利分数。
在第二个样例中,Andrea 可以用第一张牌解锁第二张和第三张牌。然后,他用第二张和第三张牌分别获得 $4+5=9$ 分胜利分数。
在第三个样例中,Andrea 无法用第一张牌解锁任何牌,也无法获得任何胜利分数。
由 ChatGPT 4.1 翻译