全WA(差点又RE),求助!!!

P3397 地毯

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,但这是由于数据的巧合,不然就没那么幸运。


|