sicily 1091. Maximum Sum
2015-11-08 18:24
423 查看
1091. Maximum Sum
Constraints
Time Limit: 1 secs, Memory Limit: 32 MB
Description
Given a set of n integers: A={a1, a2,..., an}, we define a function d(A) as below:t1 t2
d(A) = max{ ∑ai + ∑aj | 1 <= s1 <= t1 < s2 <= t2 <= n }
i=s1 j=s2
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)
Output
Print exactly one line for each test case. The line should contain the integer d(A).
Sample Input
1 10 1 -1 2 2 3 -3 4 -4 5 -5
Sample Output
13
#include<bits/stdc++.h> using namespace std; //这道题就是把序列从中间切成两部分,然后分别算这两部分的最大子序列 int a[100008]; //从开头到当前的最大子序列 int dp[80008]; //从当前到结尾的最大子序列 int dp2[80008]; int main(){ int t; scanf("%d",&t); int tmp = t; while(t--){ int n; int sum = 0; scanf("%d",&n); for(int i = 0;i<n;i++){ scanf("%d",&a[i]); } //先算dp dp[0] = sum = a[0]; for(int i = 1;i<n;i++){ if(sum<0){ sum = 0; } sum += a[i]; if(sum>dp[i-1]){ dp[i] = sum; } else{ dp[i] = dp[i-1]; } } //再算dp2 dp2[n-1] = sum = a[n-1]; for(int i = n-2;i>=0;i--){ if(sum<0){ sum = 0; } sum += a[i]; if(sum>dp2[i+1]){ dp2[i] = sum; } else{ dp2[i] = dp2[i+1]; } } //这题指明了一定是两个子序列,我一开始加上了如下这句以为可以组合成一个子序列然后就GG了,还有一开始maxn初始化的太大,如果全是负数也是GG //int maxn = max(dp2[0],dp[n-1]); int maxn = -999999999; for(int i = 0;i<n-1;i++){ maxn = max(maxn,dp[i]+dp2[i+1]); } printf("%d\n",maxn); } }
相关文章推荐
- 数据仓库与ODS的区别
- Objection, 一个轻量级的Objective-C依赖注入框架
- 秒杀类系统设计要点
- Android学习笔记--Broadcast, BroadcastReceiver(广播)
- AsyncTask
- 汇编语言-直接定址表
- 典型用户
- 编辑距离及编辑距离算法(求字符的相似度) js版
- 汇编语言-直接定址表
- ART模式和Dalvik模式的异同
- DTCMS自定义标签,获取所有栏目以及获得二级子栏目导航
- Codeforces Round #326 (Div. 1) B Duff in Beach
- 如何绑定PasswordBox控制中的Password属性
- PHP 7的一些引人注目的新特性简单介绍
- Springloaded使用
- Android基础入门教程——9.2 MediaPlayer播放音频与视频
- select into from 和 insert into select 的用法和区别
- 01分数规划
- JAVA的内省机制(introspector)与反射机制(reflection)
- 汇编语言-内中断