前缀和与差分

1.前缀和

        一维前缀和:sum[i]=sum[i-1]+a[i]

        二维前缀和:(1)sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1]j-1]+a[i][j]

                              (2)sum[i][j]=sum[i-1][j]+f[i][j]      // f[i][j]表示第i行前j个数的和

2.差分(数的差)

        求l~r间数的和——>sum[r]-sum[l-1]

        一维差分:b[i]=a[i]-a[i-1]——>a[i]=b[1]+b[2]+~~~+b[i]

        二维差分:d[x1][y1]+=p,d[x1][y2+1]-=p,d[x2+1][y1]-=p,d[x2+1][y2+1]+=p

        对序列差分只影响b[l],b[r+1]对其一个加一个减

posted @ 2018-07-28 19:47  lcan  阅读(285)  评论(0编辑  收藏  举报