QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#806944 | #9874. Matrix Construction | ItzDesert | WA | 0ms | 3676kb | C++17 | 4.5kb | 2024-12-09 17:13:40 | 2024-12-09 17:13:41 |
Judging History
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)