洛谷 P3397 地毯

时间:2021-11-10 03:30:50

P3397 地毯

题目背景

此题约为NOIP提高组Day2T1难度。

题目描述

n*n的格子上有m个地毯。

给出这些地毯的信息,问每个点被多少个地毯覆盖。

输入输出格式

输入格式:

第一行,两个正整数n、m。意义如题所述。

接下来m行,每行两个坐标(x1,y1)(x2,y2),代表一块地毯,左上角是(x1,y1),右下角是(x2,y2)

输出格式:

输出n行,每行n个正整数。

i行第j列的正整数表示(i,j)这个格子被多少个地毯覆盖。

输入输出样例

输入样例#1:
5 3
2 2 3 3
3 3 5 5
1 2 1 4
输出样例#1:
0 1 1 1 0
0 1 1 0 0
0 1 2 1 1
0 0 1 1 1
0 0 1 1 1

说明

样例解释

0 0 0 0 0         0 0 0 0 0        0 1 1 1 0
0 1 1 0 0 0 1 1 0 0 0 1 1 0 0
0 1 1 0 0 -> 0 1 2 1 1 -> 0 1 2 1 1
0 0 0 0 0 0 0 1 1 1 0 0 1 1 1
0 0 0 0 0 0 0 1 1 1 0 0 1 1 1

数据范围

对于20%的数据,有n<=50m<=100

对于100%的数据,有n<=1000m<=1000

/*简单的模拟 O(n^3) 没问题*/
#include<cstdio>
using namespace std;
const int MAXN=;
int n,m,a[MAXN][MAXN];
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int x,y,x2,y2;
scanf("%d%d%d%d",&x,&y,&x2,&y2);
for(int j=x;j<=x2;j++)
for(int k=y;k<=y2;k++)
a[j][k]++;
}
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return ;
}