二维差分、二维前缀和的模板题
#include<bits/stdc++.h>
using namespace std;
const int maxn=1100;
int n,m,d[maxn][maxn],a[maxn][maxn];
void deal(int xl,int yl,int xr,int yr,int val){
++d[xl][yl];
--d[xr+1][yl];
--d[xl][yr+1];
++d[xr+1][yr+1];
}
int main(){
scanf("%d%d",&n,&m);
while(m--){
int x1,x2,y1,y2;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
deal(x1,y1,x2,y2,1);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
a[i][j]+=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+d[i][j];
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}