POJ 2479 - Maximum sum(线性DP)
来源:互联网 发布:java ee 6 源码 编辑:程序博客网 时间:2024/06/06 17:18
Description
Given a set of n integers: A={a1, a2,..., an}, we define a function d(A) as below:Your task is to calculate d(A).
Input
The input consists of T(<=30) test cases. The number of test cases (T) is given in the first line of the input.
Each test case contains two lines. The first line is an integer n(2<=n<=50000). The second line contains n integers: a1, a2, ..., an. (|ai| <= 10000).There is an empty line after each case.
Each test case contains two lines. The first line is an integer n(2<=n<=50000). The second line contains n integers: a1, a2, ..., an. (|ai| <= 10000).There is an empty line after each case.
Output
Print exactly one line for each test case. The line should contain the integer d(A).
Sample Input
1101 -1 2 2 3 -3 4 -4 5 -5
Sample Output
13
Hint
In the sample, we choose {2,2,3,-3,4} and {5}, then we can get the answer.
Huge input,scanf is recommended.
Huge input,scanf is recommended.
题意:
求出得到两段子序列 和最大。
思路;
l[i] 记录从0到i 最大的子序列的和,r[i] 记录从i 到n-1的子序列最大和。
CODE:
#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#include <string>#include <cstring>#include <queue>#include <stack>#include <vector>#include <set>#include <map>const int inf=0xfffffff;typedef long long ll;using namespace std;int num[50005];int l[50005], r[50005];int main(){ int T; scanf("%d", &T); while(T--){ int n; scanf("%d", &n); for(int i = 0; i < n; ++i){ scanf("%d", &num[i]); } l[0] = num[0]; for(int i = 1; i < n; ++i){ if(l[i - 1] < 0){ l[i] = num[i]; } else l[i] = l[i - 1] + num[i]; } for(int i = 1; i < n; i++){ l[i] = max(l[i], l[i - 1]); } r[n - 1] = num[n - 1]; for(int i = n - 2; i >= 0; --i){ if(r[i + 1] < 0){ r[i] = num[i]; } else r[i] = r[i + 1] + num[i]; } for(int i = n - 2; i >= 0; --i){ r[i] = max(r[i], r[i + 1]); } int ans = -inf; for(int i = 1; i < n; ++i){ ans = max(ans, l[i - 1] + r[i]); } printf("%d\n", ans); } return 0;}
0 0
- POJ - 2479 《Maximum sum》 【线性DP】
- POJ 2479 - Maximum sum(线性DP)
- POJ 2479-Maximum sum(线性dp)
- poj 2479 Maximum sum 【DP】
- POJ 2479 Maximum sum DP
- POJ 2479 Maximum sum(DP)
- POJ 2479 Maximum sum[DP]
- poj-2479 Maximum sum DP
- POJ 2479 Maximum sum ( DP )
- 【poj 2479】Maximum sum DP
- POJ 2479 Maximum sum dp
- POJ2479 Maximum sum 线性dp
- POJ-2479 Maximum sum (线性dp 维护区间最大值 枚举)
- POJ 2479 Maximum sum(双向DP)
- POJ 2593 Max Sequence POJ 2479 Maximum sum (线性dp 最大连续两不重叠子段和)
- poj 2479 Maximum sum
- POJ 2479 Maximum sum
- POJ 2479 Maximum sum
- 网络编程(4)--UDP
- 图像傅立叶变换的原理和物理意义
- 关于循环队列的体会
- OpenCV 光流(Optical Flow)
- C++虚拟二级文件管理系统
- POJ 2479 - Maximum sum(线性DP)
- 记事本
- 小贝学习html--列表
- poj 1328Radar Installation(uvaoj 2519)区间选点
- C# 泛型委托 Action/Func
- 在JS中使用Freemaker变量值,利用函数js_string
- LSH 高维近似查询--hahing
- 一个项目多个appconfig
- S3C2440看门狗解析