【题目描述】
给出一个长度为 n 的序列 A1,A2,...,An,求最大连续和。换句话说,要求找到 1<=i<=j<=n,使得 Ai+Ai+1+...+Aj尽量大。
【输入】
第一行输入 n(1<=n<=50000)。接下来 1 行输入序列的 n 个元素,第 i+1 行为 Ai(|Ai|<=10000)。
【输出】
输出一个数表示最大连续和。
【样例输入】
4
2 -1 3 -2
【样例输出】
4
【数据范围】
30%的数据 n<=100;
60%的数据 n<=10000;
100%的数据 n<=50000。
==================题解===================
动态规划。
对于第i个数据,dp数组存储dp[i-1]+a[i]与a[i]中较大的一个,即若当前数列加上这个数据后小于当前数据,则另开一个数列。此时更新ans为原来的ans与dp[i]中的较大值。可以边读入边处理,最后输出ans。

512

被折叠的 条评论
为什么被折叠?



