CF2064C.Remove the Ends

普及-

通过率:0%

AC君温馨提醒

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

题目描述

你有一个长度为 nn 的数组 aa,其中元素均为非零整数。初始时你有 00 枚硬币,你将重复以下操作直到 aa 变为空:

  • 设当前数组 aa 的大小为 mm。选择一个整数 ii(1≤i≤m1 \le i \le m),获得 ∣ai∣|a_i| ∗^{\text{∗}} 枚硬币,然后:
    • 如果 ai<0a_i < 0,则将 aa 替换为 [a1,a2,…,ai−1][a_1,a_2,\ldots,a_{i - 1}](即删除从 aia_i 开始的后缀);
    • 否则,将 aa 替换为 [ai+1,ai+2,…,am][a_{i + 1},a_{i + 2},\ldots,a_m](即删除以 aia_i 结尾的前缀)。

请计算最终你能获得的最大硬币数量。

∗^{\text{∗}} 此处 ∣ai∣|a_i| 表示 aia_i 的绝对值:当 ai>0a_i > 0 时等于 aia_i,当 ai<0a_i < 0 时等于 −ai-a_i。

输入格式

第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4)——测试用例数量。

每个测试用例的第一行包含一个整数 nn(1≤n≤2⋅1051 \le n \le 2 \cdot 10^5)——数组 aa 的长度。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n(−109≤ai≤109-10^9 \le a_i \le 10^9,ai≠0a_i \ne 0)。

所有测试用例的 nn 之和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,输出最终能获得的最大硬币数量。

输入输出样例

  • 输入#1

    3
    6
    3 1 4 -1 -5 -9
    6
    -10 -3 -17 1 19 20
    1
    1

    输出#1

    23
    40
    1

说明/提示

第一个测试用例中获得 2323 枚硬币的操作示例:

  • a=[3,1,4,−1,−5,-9]→i=6a=[3,1,4,−1,−5]a = [3, 1, 4, -1, -5, \text{\color{red}{-9}}] \xrightarrow{i = 6} a = [3, 1, 4, -1, -5],获得 99 枚硬币。
  • a=[3,1,4,−1,−5]→i=1a=[1,4,−1,−5]a = [\text{\color{red}{3}}, 1, 4, -1, -5] \xrightarrow{i = 1} a = [1, 4, -1, -5],获得 33 枚硬币。
  • a=[1,4,−1,−5]→i=1a=[4,−1,−5]a = [\text{\color{red}{1}}, 4, -1, -5] \xrightarrow{i = 1} a = [4, -1, -5],获得 11 枚硬币。
  • a=[4,−1,-5]→i=3a=[4,−1]a = [4, -1, \text{\color{red}{-5}}] \xrightarrow{i = 3} a = [4, -1],获得 55 枚硬币。
  • a=[4,-1]→i=2a=[4]a = [4, \text{\color{red}{-1}}] \xrightarrow{i = 2} a = [4],获得 11 枚硬币。
  • a=[4]→i=1a=[]a = [\text{\color{red}{4}}] \xrightarrow{i = 1} a = [],获得 44 枚硬币。

最终共获得 2323 枚硬币。

第二个测试用例中获得 4040 枚硬币的操作示例:

  • a=[−10,−3,−17,1,19,20]→i=4a=[19,20]a = [-10, -3, -17, \text{\color{red}{1}}, 19, 20] \xrightarrow{i = 4} a = [19, 20],获得 11 枚硬币。
  • a=[19,20]→i=1a=[20]a = [\text{\color{red}{19}}, 20] \xrightarrow{i = 1} a = [20],获得 1919 枚硬币。
  • a=[20]→i=1a=[]a = [\text{\color{red}{20}}] \xrightarrow{i = 1} a = [],获得 2020 枚硬币。

最终共获得 4040 枚硬币。

翻译由 DeepSeek R1 完成

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

首页