CF1667B Optimal Partition
题目描述
给定一个包含 $n$ 个整数的数组 $a$。你需要将 $a$ 划分为若干个连续且非空的子数组(总共有 $2^{n-1}$ 种划分方式)。
设 $s = a_l + a_{l+1} + \ldots + a_r$。对于子数组 $a_l, a_{l+1}, \ldots, a_r$,其价值定义如下:
- 如果 $s > 0$,则价值为 $(r-l+1)$;
- 如果 $s = 0$,则价值为 $0$;
- 如果 $s < 0$,则价值为 $-(r-l+1)$。
请问,采用最优划分方式时,所有子数组价值之和的最大值是多少?
输入格式
输入包含多组测试数据。第一行包含一个整数 $t$($1 \le t \le 5 \cdot 10^5$),表示测试数据组数。接下来是每组测试数据的描述。
每组测试数据的第一行包含一个整数 $n$($1 \le n \le 5 \cdot 10^5$)。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($-10^9 \le a_i \le 10^9$)。
保证所有测试数据中 $n$ 的总和不超过 $5 \cdot 10^5$。
输出格式
对于每组测试数据,输出一个整数,表示采用最优划分方式时所有子数组价值之和的最大值。
说明/提示
测试点 $1$:一种最优划分方式为 $[1, 2]$,$[-3]$。$1+2>0$,因此 $[1, 2]$ 的价值为 $2$。$-3