题意
在 n×n 的格子上有 m 个地毯。
给出这些地毯的信息,问每个点被多少个地毯覆盖。
就是矩形覆盖,求某个点共被覆盖多少次。
思路
暴力硬上不知道会不会超时,但是这题考的是差分的使用,而且是二维差分,非常的经典啊,直接上代码吧。
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1009;
int a[N][N];
int main()
int n, m; cin>>n>>m;
while(m--)
{
int x0, y0, x1, y1;
cin>>x0>>y0>>x1>>y1;
a[x0][y0]++, a[x0][y1+1]--;
a[x1+1][y0]--, a[x1+1][y1+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];
cout<<a[i][j]<<' ';
}
cout<<endl;
}
}