QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#806944#9874. Matrix ConstructionItzDesertWA 0ms3676kbC++174.5kb2024-12-09 17:13:402024-12-09 17:13:41

Judging History

你现在查看的是最新测评结果

  • [2024-12-09 17:13:41]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3676kb
  • [2024-12-09 17:13:40]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int a[1010][1010];
bool check(int n,int m) {
    set<int> s;
     for(int i = 1;i<=n;i++) {
            for(int j = 1;j<=m;j++) {
                if(i>1) {
                    int d = a[i][j]+a[i-1][j];
                    if(s.find(d)!=s.end()) 
                    {return false;
                    }
                    s.insert(d);
                }
                if(j>1) {
                    int d = a[i][j]+a[i][j-1];
                    if(s.find(d)!=s.end()) 
                    {return false;
                    }
                    s.insert(d);
                }
            }
        }
        return true;
}
void solve()
{
    //nm存在偶数是容易的.
    //1 3 5 7
    //2 4 6 8
    //9 11 13 15
    //10 12 14 16
    //显然ok.
    //如果均奇数
    //3、5、14、10、16、12、9、8、7、17、13、
    //1 2 3
    //8 6 4
    //9 7 5
    //1 2 3 4 5 6 7
    //21 19 17 15 13 11 9
    //还是不行,tm怎么这么难啊!!!

    //1 2 3
    //5 6 4
    //7 8 9
    //1 2 3 4 5
    //7 8 9 10 6
    //11 12 13 14 15.
    //17 18 19 20 16
    //21 22 23 24 25
    
    int n,m,f = 0;
    cin>>n>>m;
    if(n%2==0||m%2==0)
    {
        if(n%2==1&&m%2==0) {
            swap(n,m);
            f = 1;
        }
        int ot = 1,et = 2;
        for(int i = 1;i<=n;i++) {
            if(i&1)
            {
                for(int j = 1;j<=m;j++) {
                    a[i][j] = ot;
                    ot+=2;
                }
            } else {
                for(int j = 1;j<=m;j++) {
                    a[i][j] = et;
                    et+=2;
                }
            }
        }
        if(n&1) {
            for(int i = 1;i<=n;i++) {
                for(int j = 1;j<=m;j++) {

                }
            }
            for(int j = 1;j<=m;j++) a[n][j] = n*m-m+j;
        }
        if(f) {
            for(int j = 1;j<=m;j++) {
                for(int i = 1;i<=n;i++) {
                    cout<<a[i][j]<<" ";
                }
                cout<<'\n';
            }
        } else {
    for(int i = 1;i<=n;i++) {
                for(int j = 1;j<=m;j++) {
                    cout<<a[i][j]<<" ";
                }
                cout<<'\n';
            }
        }
    }
    else {
        int tot = 0;
        for(int i = 1;i<=n;i++) {
            if(i%2==1) {
                for(int j = 1;j<=m;j++) a[i][j] = ++tot;
            } else {
                for(int j = 2;j<=m;j++) a[i][j] = ++tot;
                a[i][1] = ++tot;
            }
        }
         for(int i = 1;i<=n;i++) {
                for(int j = 1;j<=m;j++) {
                    cout<<a[i][j]<<" ";
                }
                cout<<'\n';
            }
    }
    if(!check(n,m)) {
        cout<<"nooo!!!"<<endl;
    }
}

int main(){
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    // int b[27],c[22][22];
    // int n = 3,m = 5,fuck = 0;
    // for(int i = 0;i<n*m;i++) b[i] = i;
    // do
    // {
    //     fuck++;
    //     for(int i = 0;i<n*m;i++) {
    //         int x = i/m,y = i%m;
    //         c[x+1][y+1] = b[i]+1;
    //     }
    //     //  for(int i = 1;i<=n;i++) {
    //     //     for(int j = 1;j<=m;j++) {
    //     //     cout<<c[i][j]<<" ";
    //     //     }
    //     //     cout<<'\n';
    //     //   }
    //     //check.
    //     bool f =true;
    //     set<int> s;
    //     for(int i = 1;i<=n;i++) {
    //         for(int j = 1;j<=m;j++) {
    //             if(i>1) {
    //                 int d = c[i][j]+c[i-1][j];
    //                 if(s.find(d)!=s.end()) 
    //                 {f = false;
    //                     goto out;
    //                 }
    //                 s.insert(d);
    //             }
    //             if(j>1) {
    //                 int d = c[i][j]+c[i][j-1];
    //                 if(s.find(d)!=s.end()) 
    //                 {f = false;
    //                     goto out;
    //                 }
    //                 s.insert(d);
    //             }
    //         }
    //     }
    //     out:
    //     if(f) {
    //            for(int i = 1;i<=n;i++) {
    //         for(int j = 1;j<=m;j++) {
    //         cout<<c[i][j]<<" ";
    //         }
    //         cout<<'\n';
    //            }
    //            break;
    //     }
    // } while (next_permutation(b,b+n*m));
    int T = 1;
    cin>>T;
    while (T--)
    {
        solve();
    }
    
}

詳細信息

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3676kb

input:

2
1 1
2 3

output:

1 
1 3 5 
2 4 6 

result:

wrong answer Token parameter [name=ok] equals to "1", doesn't correspond to pattern "[yY][eE][sS]" (test case 1)