POJ 2479 Maximum sum (动态规划)

原创 2018年04月17日 20:00:28

题目链接
http://bailian.openjudge.cn/practice/2479/

用两次动态规划,否则超时

#include <iostream>
#include <cstdio>

using namespace std;

int T, N;
long long A[51000];
long long front_sum[51000], back_sum[51000];
long long rsum[51000];


int main()
{
    scanf("%d", &T);
    while(T--)
    {
        long long max_sum = -999999;
        scanf("%d", &N);
        for(int i=0;i<N;i++)
            scanf("%lld", &A[i]);

        //memset(front_sum, 0,sizeof(front_sum));
        //memset(back_sum, 0, sizeof(back_sum));

        if(N == 1)      // 处理特殊情况
        {
            printf("%lld\n", A[0]);
            continue;
        }

        // 计算点i及之前的前缀最大和
        front_sum[0] = A[0];
        for(int i=1;i<N;i++)
            front_sum[i] = max(front_sum[i-1]+A[i], A[i]);
        // 计算点i及之后的后缀最大和
        back_sum[N-1] = A[N-1];
        for(int i=N-2;i>=0;i--)
            back_sum[i] = max(back_sum[i+1]+A[i], A[i]);

        // 计算点i右侧连续点的最大值
        rsum[N-1] = back_sum[N-1];
        for(int i=N-2;i>=0;i--)
            rsum[i] = max(back_sum[i], rsum[i+1]);

        for(int i=0;i<N-1;i++)
        {
            long long _sum = front_sum[i] + rsum[i+1];
            max_sum = max(_sum, max_sum);
        }

        printf("%lld\n", max_sum);
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pku_Coder/article/details/79979864

poj2479Maximum sum

刚刚开始一直错 一直错 原来是i+1已经大于n了。。。本以为是0没关系的,看来不能想当然#include #include #include int main() { int i,t,n,m...
  • su20145104009
  • su20145104009
  • 2015-03-26 20:42:08
  • 1534

poj2479 - Maximum sum

想看更多的解题报告: http://blog.csdn.net/wangjian8006/article/details/7870410                              ...
  • wangjian8006
  • wangjian8006
  • 2012-05-21 18:48:29
  • 4569

C++动态规划算法之Maximum sum(最大和)

Maximum sum(最大和) Description Given a set of n integers: A={a1, a2,..., an}, we define a function d...
  • C20190413
  • C20190413
  • 2017-07-11 11:36:58
  • 550

Maximum sum-动态规划

A - Maximum sum Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Sub...
  • qq_18661257
  • qq_18661257
  • 2015-07-25 17:14:21
  • 1004

POJ2.6 1481 Maximum sum

POJ2.6 1481 Maximum sum
  • leizhehan
  • leizhehan
  • 2016-11-07 18:05:49
  • 441

1007. Maximum Subsequence Sum (25)-PAT甲级真题(动态规划dp)

1007. Maximum Subsequence Sum (25) Given a sequence of K integers { N1, N2, …, NK }. A continuo...
  • liuchuo
  • liuchuo
  • 2016-08-07 20:13:17
  • 766

54.Maximum Subarray(动态规划)

Find the contiguous subarray within an array (containing at least one number) which has the largest ...
  • u010339647
  • u010339647
  • 2016-01-09 23:02:38
  • 250

1481:Maximum sum

本题要求将给定的N个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为m行n列,满足条件:m*n等于N;m>=n;且m-n取所...
  • Wanglinlin_bfcx
  • Wanglinlin_bfcx
  • 2017-07-28 16:56:56
  • 107

poj 2479 - Maximum sum

题目:找到一个序列中的两个连续段使得他们的和最大。 分析:dp,最大字段和。双向求最大字段和,枚举结束点找到加和最大值。 说明:与合唱队形类似。(同poj2593)(2011-09-24 02:0...
  • mobius_strip
  • mobius_strip
  • 2014-09-17 21:45:34
  • 604

POJ - 2479 Maximum sum

Maximum sum Time Limit: 1000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u...
  • qq_18738333
  • qq_18738333
  • 2015-03-28 14:18:41
  • 257
收藏助手
不良信息举报
您举报文章:POJ 2479 Maximum sum (动态规划)
举报原因:
原因补充:

(最多只允许输入30个字)