GP28426. 端点供能

提交4 通过2
通过率50%
文件IO启用
输入文件energy.in
输出文件energy.out
时间限制1000ms
内存限制256MiB
    ID: 14573 传统题 文件IO 输入文件:energy.in 输出文件:energy.out 1000ms 256MiB 尝试: 4 已通过: 2 难度: 普及+/提高- 上传者: 标签>区间 DP

题目描述

题目描述

有 nn 个能量模块从左到右排成一行,第 ii 个模块的能量变化量为整数 aia_i。

你需要选择一个非负整数 EE 作为初始能量。之后重复以下操作,直到所有模块都被激活:

  • 选择当前剩余模块中最左边或最右边的一个并激活;
  • 将该模块的能量变化量加到当前能量上,然后检查当前能量是否非负;
  • 被激活的模块从这一行中消失。

如果每次激活后的能量都不小于 00,包括激活最后一个模块之后,那么这次激活顺序是安全的。

请计算最小的初始能量 EE,使得至少存在一种安全的激活顺序。

输入格式

从文件 energy.in 中读取数据。

第一行包含一个整数 nn,表示模块数量。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n,表示各模块的能量变化量。

输出格式

输出到文件 energy.out 中。

输出一个非负整数,表示最小的初始能量 EE。

3
3 -5 2
0
3
-4 10 -3
3

样例解释

样例 #1 中,取 E=0E=0,依次激活原下标为 1,3,21,3,2 的模块。每次激活后的能量依次为 3,5,03,5,0,因此这一顺序是安全的。由于初始能量不能为负数,答案不可能小于 00。

样例 #2 中,取 E=3E=3,依次激活原下标为 3,2,13,2,1 的模块。每次激活后的能量依次为 0,10,60,10,6。若取 E=2E=2,第一次只能激活能量变化量为 −4-4 或 −3-3 的模块,激活后的能量都会小于 00,因此答案为 33。注意所有模块的能量变化量之和为正数,但初始能量仍不能取 00。

数据规模与约定

对于所有数据,保证:

  • 1≤n≤30001\le n\le 3000;
  • −109≤ai≤109 (1≤i≤n)-10^9\le a_i\le 10^9\ (1\le i\le n);
  • aia_i 可以为正数、零或负数。

由于能量值和答案可能超过 3232 位有符号整数的范围,建议使用 6464 位整数。

本题采用子任务捆绑计分。只有通过某个子任务内的所有测试点,才能获得该子任务的分数;各子任务独立计分。

子任务对应的测试点编号 分值 额外约束
1∼21\sim 2 1010 n≤10n\le 10
3∼43\sim 4 对所有 1≤i≤n, ai≥01\le i\le n,\ a_i\ge 0
5∼105\sim 10 3030 n≤300n\le 300
11∼2011\sim 20 5050 无特殊限制

下发文件

下载三组测试数据,非真实测试数据