#P14242. [CCPC 2024 Shandong I] 分割序列

[CCPC 2024 Shandong I] 分割序列

题目描述

给定长度为 nn 的整数序列 a1,a2,,ana_1, a_2, \cdots, a_n,请将序列分成 kk 段连续且非空的子数组,使得序列中的每个元素恰属于一个子数组。令 sis_i 表示从左到右第 ii 个子数组里的元素之和,对于每个 1kn1 \le k \le n,求下式的最大值。

i=1ki×si\sum\limits_{i = 1}^k i \times s_i

更正式地,对于每个 1kn1 \le k \le n,令 r0=0r_0 = 0 以及 rk=nr_k = n,您需要找到 (k1)(k - 1) 个整数 r1,r2,,rk1r_1, r_2, \cdots, r_{k - 1} 满足 r0<r1<r2<<rk1<rkr_0 < r_1 < r_2 < \cdots < r_{k - 1} < r_k,并最大化下式的值。

$$\sum\limits_{i = 1}^k i \times (\sum\limits_{j = r_{i - 1} + 1}^{r_i} a_j) $$

输入格式

有多组测试数据。第一行输入一个整数 TT 表示测试数据组数,对于每组测试数据:

第一行输入一个整数 nn1n5×1051 \le n \le 5 \times 10^5)表示序列的长度。

第二行输入 nn 个整数 a1,a2,,ana_1, a_2, \cdots, a_n106ai106-10^6 \le a_i \le 10^6)表示序列。

保证所有数据 nn 之和不超过 5×1055 \times 10^5

输出格式

每组数据输出一行 nn 个由单个空格分隔的整数 v1,v2,,vnv_1, v_2, \cdots, v_n,其中 viv_i 表示 k=ik = i 时的答案。

2
6
1 3 -4 5 -1 -2
1
100
2 4 5 3 1 -2
100

提示

对于第一组样例数据,考虑 k=3k = 3,可以将序列分割为 {{1},{3,4},{5,1,2}}\{\{1\}, \{3, -4\}, \{5, -1, -2\}\}。答案是 $1 \times 1 + 2 \times (3 - 4) + 3 \times (5 - 1 - 2) = 5$。