# 二维差分

二维差分

整理一下差分的板子。

//二维差分
//对(x1,y1),(x2,y2)包围的矩阵中所有元素加上x
inline void add(int x1,int y1,int x2,int y2,int x){
    d[x1][y1]+=x;
    d[x1][y2+1]-=x;
    d[x2+1][y1]-=x;
    d[x2+1][y2+1]+=x;
}

//读入矩阵中的元素时,通过add操作加入到差分数组中
rep(i,1,n)rep(j,1,m){
    sf(x);
    add(i,j,i,j,x);
}

//二维前缀和
d[i][j]+=d[i-1][j]+d[i][j-1]-d[i-1][j-1];

你可能感兴趣的:(# 二维差分)