最新公告
  • 欢迎您光临信息学奥赛网,一个优质的信息学编程题库和信息学编程学习资源专业网站。欢迎加入VIP
  • 移到末尾

    正文概述 陈老师   2026-01-20 15:16:01  

    题目描述

    给定一个由 nn 个整数组成的数组 aa

    对于每一个从 11nn 的整数 kk,你需要执行以下操作:

    1 从数组 aa 中任选一个元素,将它移动到数组的末尾(你也可以选择最后一个元素,此时数组不会改变);

    2 输出数组 aa 的后 kk 个元素之和;

    3 将第一步移动的元素还原到原来的位置(恢复原始数组 aa)。

    对于每个 kk,你应选择一个最优的移动方式,使得输出的后 kk 项的和尽可能大。

    请你计算并输出每个 kk 的最大可能值。

    输入格式

    第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的个数。

    接下来的每组测试用例包括两行:

    第一行一个整数 nn1n21051 \le n \le 2 \cdot 10^5);

    第二行 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1091 \le a_i \le 10^9)。

    额外保证:所有测试用例中 nn 的总和不超过 21052 \cdot 10^5

    输出格式

    对于每个测试用例,输出 nn 个整数,第 ii 个整数表示当 k=ik=i 时你所能获得的最大和。

    样例

    4
    7
    13 5 10 14 8 15 13
    6
    1000000000 1000000000 1000000000 1000000000 1000000000 1000000000
    1
    42
    2
    7 5
    
    15 28 42 50 63 73 78
    1000000000 2000000000 3000000000 4000000000 5000000000 6000000000
    42
    7 12
    

    提示

    样例1解释

    以第一个测试用例为例:

    k=1k=1,将第 6 个元素(值为 15)移到末尾,数组变为 [13, 5, 10, 14, 8, 13, 15],输出末尾元素之和:15;

    k=2k=2,同样移动第 6 个元素,数组为 [13, 5, 10, 14, 8, 13, 15],输出后两项:13 + 15 = 28;

    k=3k=3,将第 4 个元素(值为 14)移到末尾,变为 [13, 5, 10, 8, 15, 13, 14],后 3 项之和为 15 + 13 + 14 = 42;

    以此类推。

    信息学奥赛网,一个优质的信息学奥赛学习资源平台!
    信息学奥赛网 » 移到末尾