bzoj#P2000. [HNOI2010] stone 取石头游戏

[HNOI2010] stone 取石头游戏

题目描述

A 公司正在举办一个智力双人游戏比赛——取石子游戏,游戏的获胜者将会获得 A 公司提供的丰厚奖金,因此吸引了来自全国各地的许多聪明的选手前来参加比赛。与经典的取石子游戏相比,A 公司举办的这次比赛的取石子游戏规则复杂了很多:

  • 总共有 nn 堆石子依次排成一行,第 ii 堆石子有 aia_i 个石子。
  • 开始若干堆石子已被 A 公司故意拿走。
  • 然后两个玩家轮流来取石子,每次每个玩家可以取走一堆中的所有石子,但有一个限制条件:一个玩家若要取走一堆石子,则与这堆石子相邻的某堆石子已被取走(之前被某个玩家取走或开始被 A 公司故意拿走)。注意:第 11 堆石子只与第 22 堆石子相邻,第 nn 堆石子只与第 n1n- 1 堆石子相邻,其余的第 ii 堆石子与第 i1i - 1 堆和第 i+1i + 1 堆石子相邻。
  • 所有石子都被取走时,游戏结束。谁最后取得的总石子数最多,谁就获得了这场游戏的胜利。

作为这次比赛的参赛者之一,绝顶聪明的你,想知道对于任何一场比赛,如果先手者和后手者都使用最优的策略,最后先手者和后手者分别能够取得的总石子数分别是多少。

输入格式

第一行是一个正整数 nn,表示有多少堆石子。

输入文件第二行是用空格隔开的 nn 个非负整数 a1,a2,,ana_1, a_2,\ldots, a_n,其中 aia_i 表示第 ii 堆石子有多少个石子,ai=0a_i = 0 表示第 ii 堆石子开始被 A 公司故意拿走。

输出格式

仅包含一行,为两个整数,分别表示都使用最优策略时,最后先手者和后手者各自能够取得的总石子数,并且两个整数间用一个空格隔开。

8
1 2 0 3 7 4 0 9
17 9

样例说明 1

两个玩家都使用最优策略时取走石子的顺序依次为 9,2,1,4,7,39, 2, 1, 4, 7, 3,因此先手者取得 9+1+7=179 + 1 + 7 = 17 个石子,后手者取得 2+4+3=92 + 4 + 3 = 9 个石子。

数据规模与约定

对于 30%30\% 的数据,2n1002\leq n\leq 100
对于 100%100\% 的数据,2n1062\leq n\leq 10^60ai1080 \leq a_i \leq 10^8,并且至少有一个 ii 使得 ai=0 a_i = 0