General
 
 
# Author Problem Lang Verdict Time Memory Sent Judged  
188294620 Practice:
DaiRuiChen007
1551D2 - 36 C++14 (GCC 6-32) Accepted 31 ms 60 KB 2023-01-07 11:28:04 2023-01-07 11:28:04
→ Source
// LUOGU_RID: 98934738
#include<bits/stdc++.h> 
using namespace std;
const int MAXN=101,dx[]={0,0,1,-1},dy[]={1,-1,0,0};
int n,m,a[MAXN][MAXN];
char ch[MAXN][MAXN];
inline bool valid(int i,int j) {
	return 1<=i&&i<=n&&1<=j&&j<=m;
}
inline void get(int i,int j) {
	if(ch[i][j]) return ;
	int i2=0,j2=0;
	for(int k:{0,1,2,3}) {
		int x=i+dx[k],y=j+dy[k];
		if(!valid(x,y)) continue;
		if(a[x][y]==a[i][j]) {
			i2=x,j2=y;
			continue;
		}
	}
	for(char ret='a';ret<='z';++ret) {
		bool ok=true;
		for(int k:{0,1,2,3}) {
			int x=i+dx[k],y=j+dy[k];
			if(!valid(x,y)||(x==i2&&y==j2)) continue;
			if(ch[x][y]==ret) {
				ok=false;
				break;
			} 
		}
		for(int k:{0,1,2,3}) {
			int x=i2+dx[k],y=j2+dy[k];
			if(!valid(x,y)||(x==i&&y==j)) continue;
			if(ch[x][y]==ret) {
				ok=false;
				break;
			} 
		}
		if(ok) {
			ch[i][j]=ch[i2][j2]=ret;
			return ;
		}
	}
	return ;
}
inline void solve() {
	int k,cnt=0;
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1;i<=n;++i) {
		for(int j=1;j<=m;++j) {
			a[i][j]=ch[i][j]=0;
		}
	}
	if(n%2==0&&m%2==1) {
		if(k>n*(m/2)) {
			puts("NO");	
			return ;
		} else {
			if(k%2==0) {
				puts("YES");
				for(int i=1;i<=n;i+=2) {
					for(int j=1;j<m;j+=2) {
						if(cnt>=k) goto fill;
						a[i][j]=a[i][j+1]=++cnt;
						a[i+1][j]=a[i+1][j+1]=++cnt;
					}
				}
			} else {
				puts("NO");
				return ;
			}
		}
	}
	if(n%2==1&&m%2==0) {
		if(k<m/2) {
			puts("NO");
			return ;
		} else {
			if((k-m/2)%2==0) {
				puts("YES");
				for(int j=1;j<=m;j+=2) a[n][j]=a[n][j+1]=++cnt;
				for(int i=1;i<n;i+=2) {
					for(int j=1;j<=m;j+=2) {
						if(cnt>=k) goto fill;
						a[i][j]=a[i][j+1]=++cnt;
						a[i+1][j]=a[i+1][j+1]=++cnt;
					}
				}
			} else {
				puts("NO");
				return ;
			}
		}
	}
	if(n%2==0&&m%2==0) {
		if(k%2==0) {
			puts("YES");
			for(int i=1;i<=n;i+=2) {
				for(int j=1;j<=m;j+=2) {
					if(cnt>=k) goto fill;
					a[i][j]=a[i][j+1]=++cnt;
					a[i+1][j]=a[i+1][j+1]=++cnt;
				}
			}
		} else {
			puts("NO");
			return ;
		}
	}
	fill:;
	for(int i=1;i<=n;i+=2) {
		for(int j=1;j<=m;++j) {
			if(!a[i][j]) {
				a[i][j]=a[i+1][j]=++cnt;
			}
		}
	}
	for(int i=1;i<=n;++i) {
		for(int j=1;j<=m;++j) {
			get(i,j);
			printf("%c",ch[i][j]);
		}
		puts("");
	}
}
signed main() {
	int T;
	scanf("%d",&T);
	while(T--) solve();
	return 0;
}
?
Time: ? ms, memory: ? KB
Verdict: ?
Input
?
Participant's output
?
Jury's answer
?
Checker comment
?
Diagnostics
?
Click to see test details