前缀和总结

前缀和作为基础算法,分为 

前缀和的特点:快速查询区间O(1) 

 其中,一维前缀和可以分为

一维前缀和

 1.对前缀和优化

在计算前缀和的时候,时间复杂度一般是O(N)

但是有些情况下,不仅仅是计算前缀和,还需要一些其他的需求,时间复杂度可能是O(N^2)的,这时候就要对前缀和进行优化

优化可能涉及到剪枝,维护一个值,或者某一个公共的性质

典型的题目就是最大子段和(维护值)

                  剪枝:P1114 “非常男女”计划

 简单数学             1230. K倍区间(组合数学,前缀和)

                                 P2671 [NOIP2015 普及组] 求和(简单数学,前缀和)

2.用前缀和来优化

平常求前缀和的时间复杂度是O(n),n表示区间的长度

在数据范围很大的时候,我们需要用前缀和来优化,前缀和会导致求一段区间和的时间复杂度变成O(1)

                        最佳牛围栏

二维前缀和

二维前缀和主要是用来求一个最大的矩形区间和

要注意的是   一个数组值a[x][y]表示的是一个数组值,而不是一个点

如图,是坐标(2,3)的一个区间表示a[2][3],而不是红色的点表示(2,3)

如果要在数组中找一个边长为NxM的最大矩形,要注意最坏的情况下,查找的是一个小的区间,只包含他本身

所以假如我们要寻找(1,1)~(2,2)的矩形长度,是图1

 

图1                                                         图2

 而不是图2

 如果给定了RxC的一个矩形,要我们找出最大的NxM的小区间,它的区间和最大

也就是求左上角点(x1,y1)~右下角点(x2,y2)围成的最大区间和

 

假如N,M均为1,那么图1才是我们想要的答案,怎么办呢?

原本的query是

 改为

 简单可证,通过两个+1,就可以达到图2的效果了

做题的时候要看清楚要求

        给定区间长度,求最大区间和        99. 激光炸弹(前缀和)_qq12323qweeqwe的博客-CSDN博客

领地选择

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值