站外题玄关(如果站内有的话请留下题号
  • 板块灌水区
  • 楼主lucy2012
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/4/3 17:53
  • 上次更新2024/4/3 21:08:01
查看原帖
站外题玄关(如果站内有的话请留下题号
1252442
lucy2012楼主2024/4/3 17:53

题目描述:

大哈有一面 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

C++14

提交代码

#include<bits/stdc++.h>
using namespace std;
int n,m,x1,y_1,x2,y2,a[4000][4000],d[4000][4000];
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>x1>>y_1>>x2>>y2;
d[x1][y_1]++;d[x2+1][y_1]–;d[x1][y_1+1]–;d[x2+1][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;
}
return 0;
}
2024/4/3 17:53
加载中...