最大子序列和问题 二维最大子序列核问题及其优化

 

 

 

不难看出时间界是O(n).

2.一个明显的结论是,如果a[i]是负的,那么他不可能代表最有序列的起点,因为任何包含以a[i]的子序列都可以通过a[i+1]为起点的子序列来得到改进.

3.类似的,任何负子序列不可能是嘴有子序列的前缀.(原理相同)

4.那么,如果我们在循环中检查到从a[i]a[j]的子序列是负的,那么我们可以推进i.这里关键的结论是我们不仅仅可以将i推进到i+1,而且可以推进到j+1.

5.猥琐结论4:pi+1j的任意一个下标,开始于下标p的人以子序列都不大雨在下标i开始并包含从a[i]a[p-1]的子序列的对应子序列,因为后面的这个子序列不是负的(j是使得从下标i开始成为负值的第一个下标),因此把i推进到j+1是正确的,不会错过最优解.

 

 

 


对于2维的子矩阵和最大问题,我们只要枚举连续的行,让它映射到一个子串中,然后用O(n)算法解


对于2维的可垂直,水平相接的问题我们可以用单调队列进行优化,摊还后时间复杂度是O(n^3);

具体见此题 10827 - Maximum sum on a torus

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值