CF1405B.Array Cancellation

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Array Cancellation

题目描述

给定一个长度为 nn 的整数数组 aa,满足 a1+a2++an=0a_1 + a_2 + \cdots + a_n = 0

每次操作,你可以选择两个不同的下标 iijj1i,jn1 \le i, j \le n),将 aia_i11,将 aja_j11。如果 i<ji < j,这次操作是免费的,否则需要花费 11 个硬币。

你需要花费多少个硬币,才能使所有元素都变为 00

输入格式

每组测试数据包含多组测试用例。第一行包含测试用例数量 tt1t50001 \le t \le 5000)。接下来是每组测试用例的描述。

每组测试用例的第一行包含一个整数 nn1n1051 \le n \le 10^5),表示数组的长度。

接下来一行包含 nn 个整数 a1,,ana_1, \ldots, a_n109ai109-10^9 \le a_i \le 10^9)。保证 i=1nai=0\sum_{i=1}^n a_i = 0

保证所有测试用例中 nn 的总和不超过 10510^5

输出格式

对于每组测试用例,输出使所有元素都变为 00 所需的最小硬币数。

说明/提示

对于第一个测试用例的一种可能策略:

  • 执行 (i=2,j=3)(i=2, j=3) 三次(免费),此时 a=[3,2,0,1]a = [-3, 2, 0, 1]
  • 执行 (i=2,j=1)(i=2, j=1) 两次(花费两个硬币),此时 a=[1,0,0,1]a = [-1, 0, 0, 1]
  • 执行 (i=4,j=1)(i=4, j=1) 一次(花费一个硬币),此时 a=[0,0,0,0]a = [0, 0, 0, 0]

由 ChatGPT 4.1 翻译

样例

7
4
-3 5 -3 1
2
1 -1
4
-3 2 -3 4
4
-1 1 1 -1
7
-5 7 -6 -4 17 -13 4
6
-1000000000 -1000000000 -1000000000 1000000000 1000000000 1000000000
1
0
3
0
4
1
8
3000000000
0

在线编程 IDE

建议全屏模式获得最佳体验