二维差分基础

二维差分数组构造:

\(b\left [ i\right ]\left [ j\right ]=a\left [ i\right ]\left [ j\right ]-a\left [ i-1\right ]\left [ j\right ]-a\left [ i\right ]\left [ j-1\right ]+a\left [ i-1\right ]\left [ j-1\right ]\)

这个式子配着二维前缀和还是挺好理解哒~

\(b\)为差分数组,\(a\)为原数组

二维差分的维护:

一维差分是在需要更新的位置开始,在不需要的位置结束,那么二维的也一样。

 例如:我们要在以(x1,y1)为左上角,以(x2,y2)为右下角的矩阵区间的所数都加上一个值\(x\)

(x1,y1)                                                              
         
      (x2,y2)  
         

 

 

 

 

 

如果我们要在区间开始的位置\(+x\),根据前缀和的思想,它影响的就是整个表格区域

那么就多影响了下面的图标区域:

(x1,y1)                                                              
         
      (x2,y2)  
         

 

 

 

 

 

所以在上述图标部分\(-a\)消除\(+a\)的影响:

\(b\left [ x1\right ]\left [y1 \right ]+=x\)

\(b\left [ x1\right ]\left [y2+1 \right ]-=x\)

\(b\left [ x2+1\right ]\left [y1 \right ]-=x\)

\(b\left [ x2+1\right ]\left [y2+1 \right ]-=x\)多减的加上

 

posted @ 2020-07-24 13:54  swsyya  阅读(745)  评论(0编辑  收藏  举报

回到顶部