java max sum_杭电1024 Max Sum Plus Plus状压dp(java)

问题描述现在我认为你已经在Ignatius.L的“最大总和”问题中得到了AC。为了成为一名勇敢的ACMer,我们总是向更难挑战的问题挑战自我。现在你面临着一个更困难的问题。给定连续的数字序列S1,S2,S3,S4 … Sx,… Sn(1≤x≤n≤1,000,000,-32768≤Sx≤32767)。我们定义了函数和(i,j)= Si … Sj(1≤i≤j≤n)。现在给定一个整数m(m> 0)...
摘要由CSDN通过智能技术生成

问题描述

现在我认为你已经在Ignatius.L的“最大总和”问题中得到了AC。为了成为一名勇敢的ACMer,我们总是向更难挑战的问题挑战自我。现在你面临着一个更困难的问题。

给定连续的数字序列S1,S2,S3,S4 … Sx,… Sn(1≤x≤n≤1,000,000,-32768≤Sx≤32767)。我们定义了函数和(i,j)= Si … Sj(1≤i≤j≤n)。

现在给定一个整数m(m> 0),你的任务是找到m对i和j,它们使sum(i1,j1) sum(i2,j2) sum(i3,j3) … sum (im,jm)maximal(ix≤iy≤jx或者ix≤jy≤jx是不允许的)。

但我很懒惰,我不想写一个专门的判断器模块,所以你不必输出m对i和j,只输出sum(ix,jx)的最大和(1≤x ≤m)。 ^ _ ^

输入

每个测试用例将以两个整数m和n开始,随后是n个整数S1,S2,S3 … Sn。

处理到文件的结尾。

产量

在一行中输出上述最大和。

示例输入

1 3 1 2 3

2 6 -1 4 -2 3 -2 3

示例输出

6

8

这题刚开始不明白,后来看了别人的思路。用dp[m][n]自己做出来但是数组太大,后来又继续学习,发现人家把多维的压缩成二维,看了好久才看明白。。

首先 value[i][j]表示以第j个元素结尾的i对最大,(dp经常处理的是以谁为结尾)

dp[i][j]表示第j元素中要求的最大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值