AT_dp_l.Deque

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

太郎君和次郎君进行如下游戏。

最初,给定一个数列 a=(a1,a2,…,aN)a = (a_1, a_2, \ldots, a_N)。两人轮流进行如下操作,直到 aa 变为空。太郎君先手。

  • 可以移除 aa 的首元素或末元素。设移除的元素为 xx,则执行操作的人获得 xx 分。

游戏结束时,太郎君的总得分为 XX,次郎君的总得分为 YY。太郎君希望最大化 X−YX - Y,次郎君则希望最小化 X−YX - Y。

假设两人都采取最优策略,求 X−YX - Y 的值。

输入格式

输入以如下格式从标准输入读入。

NN a1a_1 a2a_2 …\ldots aNa_N

输出格式

假设两人都采取最优策略,输出 X−YX - Y 的值。

输入输出样例

  • 输入#1

    4
    10 80 90 30

    输出#1

    10
  • 输入#2

    3
    10 100 10

    输出#2

    -80
  • 输入#3

    1
    10

    输出#3

    10
  • 输入#4

    10
    1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1

    输出#4

    4999999995
  • 输入#5

    6
    4 2 9 7 1 5

    输出#5

    2

说明/提示

限制条件

  • 输入均为整数。
  • 1≤N≤30001 \leq N \leq 3000
  • 1≤ai≤1091 \leq a_i \leq 10^9

样例解释 1

两人采取最优策略时,操作过程如下。被操作的元素用粗体表示。

  • 先手:(10, 80, 90, 30)→(10, 80, 90)
  • 后手:(10, 80, 90)→(10, 80)
  • 先手:(10, 80)→(10)
  • 后手:(10)→()
    此时,X=30+80=110X = 30 + 80 = 110,Y=90+10=100Y = 90 + 10 = 100。

样例解释 2

两人采取最优策略时,操作过程例如如下。

  • 先手:(10, 100, 10)→(100, 10)
  • 后手:(100, 10)→(10)
  • 先手:(10)→()
    此时,X=10+10=20X = 10 + 10 = 20,Y=100Y = 100。

样例解释 4

答案可能超出 32 位整数范围。

样例解释 5

两人采取最优策略时,操作过程例如如下。

  • 先手:(4, 2, 9, 7, 1, 5)→(4, 2, 9, 7, 1)
  • 后手:(4, 2, 9, 7, 1)→(2, 9, 7, 1)
  • 先手:(2, 9, 7, 1)→(2, 9, 7)
  • 后手:(2, 9, 7)→(2, 9)
  • 先手:(2, 9)→(2)
  • 后手:(2)→()
    此时,X=5+1+9=15X = 5 + 1 + 9 = 15,Y=4+7+2=13Y = 4 + 7 + 2 = 13。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页