[前缀和]

前缀和
 
什么是前缀和、前缀积?
•前缀和、前缀积也称前缀和数组,前缀积数组。
•给一数组A,
•前缀和:新建一数组B,数组中每一项B[i]保存A中[0…i]的和;
•后缀和:新建一数组B,数组中每一项B[i]保存A中[i…n-1]的和;
•前缀积:新建一数组B,数组中每一项B[i]保存A中[0…i]的积;
•后缀积:新建一数组B,数组中每一项B[i]保存A中[i…n-1]的积;
 
•前缀和运用了预处理的思想,以预处理来减少修改和询问操作的时间复杂度
 
•给定一个序列和m次询问,每次询问有一个左端点L和右端点R,输出[L,R]区间的和
 
•O( n )预处理,每次询问o(1)即可完成
•当然还有很多作用,总之通过前缀和可以对整个区间的和操作,例如端点绝对值
 
 
 
•把前缀和上升到二维
给定一个n*n的矩阵,找一个最大的子矩阵,使得这个子矩阵里面的元素和最大
 
朴素算法
•枚举左上端点横坐标和纵坐标
•枚举右下端点横坐标和纵坐标
•再扫一遍
•O(n^6)
 
•一维前缀和优化,省去一维最后扫一遍的复杂度
O(n^5)
 
 
O(n^4)
 
 

O(n^3)

 

猜你喜欢

转载自www.cnblogs.com/-Wind-/p/10162519.html