码迷,mamicode.com
首页 > 其他好文 > 详细

Maximum sum(poj 2479)

时间:2016-10-06 22:09:23      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

题意:给一段数列,将这个数列分成两部分,使两部分的最大子段和的和最大,输出和
技术分享
/*
  看数据没想到是(O)n的算法,求出从前向后的最大子段和和从后向前的最大子段和,
  然后枚举断点。 
  第一次提交不小心折在数组最小值的赋值上…… 
*/ 
#include<cstdio>
#include<iostream>
#include<cstring>
#define M 50010
#define INF 1000000000
using namespace std;
int a[M],f1[M],f2[M],v1[M],v2[M],n;
int main()
{
    int T;scanf("%d",&T);
    while(T--)
    {
        memset(f1,466,sizeof(f1));
        memset(f2,466,sizeof(f2));
        memset(v1,466,sizeof(v1));
        memset(v2,466,sizeof(v2));
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
          scanf("%d",&a[i]);
        for(int i=1;i<=n;i++)
          f1[i]=max(f1[i-1]+a[i],a[i]),v1[i]=max(f1[i],v1[i-1]);
        for(int i=n;i>=1;i--)
          f2[i]=max(f2[i+1]+a[i],a[i]),v2[i]=max(f2[i],v2[i+1]);
        int ans=-INF;
        for(int i=1;i<n;i++)
          ans=max(ans,v1[i]+v2[i+1]);
        printf("%d\n",ans);
    }
    return 0;
}
View Code

 

Maximum sum(poj 2479)

标签:

原文地址:http://www.cnblogs.com/harden/p/5934678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!