#D. Maximum sum

    Type: Default 1000ms 256MiB

Maximum sum

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

【题目描述】

对于给定的整数序列 A={a1,a2,...,an}A=\{a_1, a_2,..., a_n\},找出两个不重合连续子段,使得两子段中所有数字的和最大。我们如下定义函数 d(A)d(A)

$$d(A) = \max_{1≤s_1≤t_1<s_2≤t_2≤n} \left\{ \sum_{i=s_1}^{t_1}a_i+\sum_{j=s_2}^{t_2}a_j \right\} $$

我们的目标就是求出 d(A)d(A)

【输入】

第一行是一个整数T(30)T(≤30),代表一共有多少组数据。

接下来是 TT 组数据。

每组数据的第一行是一个整数,代表数据个数据 n(2n50000)n(2≤n≤50000),第二行是 nn 个整数 a1,a2,...,an(ai10000)a_1, a_2, ..., a_n(|a_i| ≤ 10000)

【输出】

输出一个整数,就是 d(A)d(A) 的值。

【输入样例】

1
10
1 -1 2 2 3 -3 4 -4 5 -5

【输出样例】

13

【提示】

就是求最大子段和问题,样列取2,2,3,3,4{2,2,3,-3,4}5{5},Baidu搜POJ 2479 Maximum sum,可获得大量经典最大子段和问题的题目解析,本题 O(n2)O(n^2) 算法超时,必须用 O(n)O(n) 算法。

【来源】

一本通在线评测

B班3.23基础线性dp考试

Not Attended
Status
Done
Rule
IOI
Problem
5
Start at
2024-3-23 9:00
End at
2024-3-25 9:00
Duration
48 hour(s)
Host
Partic.
20