thrX @ 2023-01-10 17:02:09
为森莫全WA了呢?
CODE:
#include<iostream>
using namespace std;
const int maxn=1001;
int f[maxn][maxn],really[maxn][maxn];
int sum=0;
int main(){
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++){
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
for(int j=x1;j<=x2;j++){
f[j][y1]=1;
f[j][y2]=-1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
sum+=f[i][j];
really[i][j]=sum;
cout<<really[i][j]<<' ';
}
cout<<'\n';
}
return 0;
}
求大佬改错(无比诚恳
by thrX @ 2023-01-10 17:05:20
补一句:
样例也没过
by Adelaide_Black @ 2023-01-10 17:16:48
@juruo_xyu
#include<iostream>
using namespace std;
const int maxn=1001;
int f[maxn][maxn];
int main(){
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++){
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
for(int j=x1;j<=x2;j++){
f[j][y1]++;
f[j][y2+1]--;
//这里注意要自加自减,不能直接赋值,因为有重叠的情况。
}
}
//计算前缀和即可。
for(int i=1;i<=n;i++){
for(int j=2;j<=n;j++){
f[i][j]+=f[i][j-1];
}
}
//输出答案。
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++) cout<<f[i][j]<<" ";
cout<<endl;
}
return 0;
}
by Adelaide_Black @ 2023-01-10 17:21:39
@juruo_xyu
哦,对了,还有一点。
f[j][y2]--;
要改为
f[j][y2+1]--;
这样计算前缀和时才不会忽略最后一个。
by thrX @ 2023-01-11 16:38:07
@qtww_Yan
谢谢大佬!谢谢谢谢谢谢谢谢谢谢谢(谢谢*114514)