列表

详情


NC233527. Sum

描述

Problem Number: 
有一个数列
你每次可以选择任意 个数,这 k 个数的和 S 会成为你这次操作的得分。操作结束后,你要把这 k 个数删除,然后在数组中加入 S
操作数可以为 0,求最大得分。

输入描述

本题多测。
第一行一个整数 T,表示数据组数。
对于每组数据:
- 第一行一个数 n,表示数列长度。
- 接下来一行 n 个数 a_i,表示这个数列

输出描述

对于每组数据,仅一行一个数,即最高得分。

由于结果可能较大,你只需要输出答案对  取模的值。

示例1

输入:

3
4
2 -1 1 3
3
-1 -1 3
3
-1 -2 -2022

输出:

16
3
0

说明:

样例 1 说明

- 第一次,选择 [\underline{\textbf{2}},-1,1,\underline{\textbf{3}}]S=5,数列变为 [-1,1,5]
- 第二次,选择 [-1,\underline{\textbf{1}},\underline{\textbf{5}}]S=6,数列变为 [-1,6]
- 第三次,选择 [\underline{\textbf{-1}},\underline{\textbf{6}}]S=5
- 结束游戏。
总得分 5+6+5=16

样例 3 说明

不作操作,得分 0。


原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Python3 解法, 执行用时: 221ms, 内存消耗: 26348K, 提交时间: 2023-08-13 15:32:06

n=int(input())
for i in range(n):
    z=0
    le=int(input())
    l=list(map(int,input().split()))
    l.sort(reverse=True)
    for j in range(0,le-1):
        x=l[j]+l[j+1]
        if x>0:
            z+=x
            l[j+1]=x
    print(z%10000007)

上一题