QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#117358#6309. AqreaakennesWA 1ms3580kbC++142.3kb2023-07-01 02:00:202023-07-01 02:00:21

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-07-01 02:00:21]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3580kb
  • [2023-07-01 02:00:20]
  • 提交

answer

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#define ll long long
using namespace std;
const int maxn=1e3+50,INF=0x3f3f3f3f;
int n,m,a[25][5][5],b[4][5]={{},{0,1,1,1,0},{0,1,0,1,1},{0,1,1,1,0}},c[5],ans[10][10],num,vis[9][9],kx[4]={0,1,0,-1},ky[4]={1,0,-1,0};
void DFS(int key,int x,int y,int maxx,int maxy){
	if(x<1||x>maxx||y<1||y>maxy)return;
	num++;vis[x][y]=1;
	for(int i=0;i<4;++i){
		int xx=x+kx[i],yy=y+ky[i],nowx=xx,nowy=yy;
		if(xx>=5)xx-=4;
		if(yy>=5)yy-=4;
		if(a[key][xx][yy]&&!vis[nowx][nowy])DFS(key,nowx,nowy,maxx,maxy);
	}
}
void Init(){
	for(int i=1;i<=4;++i)c[i]=i;
	int tot=0;
	do{
		++tot;
		for(int i=1;i<=4;++i){
			for(int j=1;j<=4;++j){
				a[tot][i][j]=c[i]!=j;
			}
		}
	}while(next_permutation(c+1,c+5));
	for(int i=4;i<=7;++i){
		for(int j=4;j<=7;++j){
			for(int p=1;p<=tot;++p){
				num=0;
				memset(vis,0,sizeof(vis));
				if(a[p][1][1])DFS(p,1,1,i,j);
				else DFS(p,1,2,i,j);
				/*for(int x=1;x<=4;++x){
					for(int y=1;y<=4;++y){
						cout<<a[p][x][y];
					}
					cout<<endl;
				}
				cout<<num<<endl;*/
				if(num==i*j-i*j/4){
					ans[i%4][j%4]=p;goto End;	
				}
			}
		End:;
		/*cout<<i<<" "<<j<<" : "<<endl;
		for(int x=1;x<=i;++x){
			for(int y=1;y<=j;++y){
				cout<<a[ans[i%4][j%4]][x>4?x-4:x][y>4?y-4:y];
			}
			cout<<endl;
		}
		cout<<endl;*/
		}
	}
	
}
int main() {
	//freopen("1.in","r",stdin);
	Init();
	int T;scanf("%d",&T);
	while(T--){
		cin>>n>>m;
		if(n>3){
			printf("%d\n",n*m-n*m/4);
			for(int x=1;x<=n;++x){
				for(int y=1;y<=m;++y){
					printf("%d ",a[ans[n%4][m%4]][x%4?x%4:4][y%4?y%4:4]);
				}
				puts("");
			}
		}else{
			if(n<=3&&m<=3){
				printf("%d\n",n*m);
				for(int x=1;x<=n;++x){
					for(int y=1;y<=m;++y){
						printf("1 ");
					}
					puts("");
				}
			}else{
				if(n<m){
					if(n==3&&m%4==3)printf("%d\n",n*m-n*m/4+1);
					else printf("%d\n",n*m-n*m/4);
					for(int x=1;x<=n;++x){
						for(int y=1;y<=m;++y){
							printf("%d ",b[x%4?x%4:4][y%4?y%4:4]);
						}
						puts("");
					}
				}else{
					if(m==3&&n%4==3)printf("%d\n",n*m-n*m/4+1);
					else printf("%d\n",n*m-n*m/4);
					for(int x=1;x<=m;++x){
						for(int y=1;y<=n;++y){
							printf("%d ",b[y%4?y%4:4][x%4?x%4:4]);
						}
						puts("");
					}
				}
			}
		}
	}
	
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 3580kb

input:

3
2 2
3 4
3 8

output:

4
1 1 
1 1 
9
1 1 1 0 
1 0 1 1 
1 1 1 0 
18
1 1 1 0 1 1 1 0 
1 0 1 1 1 0 1 1 
1 1 1 0 1 1 1 0 

result:

wrong answer Length must be equal to m (test case 1)