justinjia @ 2020-11-05 14:48:19
本以为会TLE(实际运行时间414ms),没想到
WAWAWAWAWAWAWAWAWAWA!!!
(花了好长时间才不RE了)
#include"stdio.h"
#include"string.h"
int main(void){
long long n,m,f[1000][1000];
memset(f,0,sizeof(f));
scanf("%lld%lld",&n,&m);
for(long long i=0;i<m;i++){
int x1,x2,y1,y2;
scanf("%lld%lld%lld%lld",&x1,&x2,&y1,&y2);
for(long long j=y1;j<=y2;j++)
for(long long k=x1;k<=x2;k++)
f[j][k]++;
}
for(long long i=0;i<n;i++){
for(long long j=0;j<n;j++)
printf("%lld ",f[i][j]);
printf("\n");
}
return 0;
}
by 呐呐呐 @ 2020-11-05 15:33:50
话说你的程序都无法输入,第三行是不是少了一个
using namespace std;
by 兴奋毕九荷lyc @ 2020-11-05 15:35:58
1.你的坐标输入顺序不太对
2.第12行的行和列弄反了
by 呐呐呐 @ 2020-11-05 16:02:46
改了一下\ 输入坐标应该是x1,y1,x2,y2 不是x1,x2,y1,y2;\ 这题不需要开long long,int就可以乐
把f数组放在主函数外会自动清0,不需要加memset
下面是改过的代码
#include"stdio.h"
using namespace std;
int n,m,f[1005][1005];
int main(void)
{
scanf("%d %d",&n,&m);
for(int i=1;i<=m;i++)
{
int x1,x2,y1,y2;
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
for(int j=x1;j<=x2;j++)
for(int k=y1;k<=y2;k++)
f[j][k]++;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
printf("%d ",f[i][j]);
printf("\n");
}
return 0;
}
如果能帮到你,就非常感谢
by Otue @ 2021-01-18 20:14:21
#include"stdio.h"
using namespace std;
int n,m,f[1005][1005];
int main(void)
{
scanf("%d %d",&n,&m);
for(int i=1;i<=m;i++)
{
int x1,x2,y1,y2;
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
for(int j=x1;j<=x2;j++)
for(int k=y1;k<=y2;k++)
f[j][k]++;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
printf("%d ",f[i][j]);
printf("\n");
}
return 0;
}
by mcDinic @ 2021-04-12 21:21:33
楼主,楼上几位的代码其实是错的。。。。。。我把改动处给您看看: 1.加using namespace std; 2.(楼上的各位搞错了)
for(long long j=y1;j<=y2;j++)
for(long long k=x1;k<=x2;k++)
f[j][k]++;
请改为
for(long long j=x1;j<=y1;j++)
for(long long k=x2;k<=y2;k++)
f[j][k]++;
3. f数组要开更大(至少要1001),而且不用memset,可直接
long long n,m,f[1001][1001]={0}//大括号中0可省略。
4(建议,可不改). int main(void)中void可省略。 5.(建议,可不改) %11d可直接写为%d。
by mcDinic @ 2021-04-12 21:27:34
补充一下,我前面提到的第二点若用楼上几位的代码也能AC,但这是由于数据的巧合,不然就没那么幸运。