51nod 最大M子段和 V1,V2,V3 dp 贪心 heap(bzoj2288)

博客探讨了如何从给定序列中选择最多M个不相交部分,以最大化总和。V1使用简单的动态规划,V2和V3采用贪心策略,处理连续正数和负数段,利用小根堆合并,保证最优解。当正数段数量大于等于M时,直接选取所有正数。
摘要由CSDN通过智能技术生成

题意:给一个长度为n的序列,要求选出m个不相交的部分,要求总和最大,如果m>= n个数中正数的个数,那么输出所有正数的和。。
V1:n,m<=5000.
V2:n,m<=50000.
V3:n,m<=500000.

V1:
一个简单的DP。
明显有f[i][j]表示做到第i个,选择了j段。
那么可以推导:
新开一段 f[i][j]=f[i1][j1]+a[i]
不选 f[i][j]=f[i1][j]
承接前一段

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值