QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#519412#5070. Check Pattern is BadzhouhuanyiWA 24ms3764kbC++141.9kb2024-08-14 19:50:102024-08-14 19:50:10

Judging History

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

  • [2024-08-14 19:50:10]
  • 评测
  • 测评结果:WA
  • 用时:24ms
  • 内存:3764kb
  • [2024-08-14 19:50:10]
  • 提交

answer

#include<iostream>
#include<cstdio>
#define N 100
using namespace std;
int read()
{
	char c=0;
	int sum=0;
	while (c<'0'||c>'9') c=getchar();
	while ('0'<=c&&c<='9') sum=sum*10+c-'0',c=getchar();
	return sum;
}
int T,n,m;
char c[N+1][N+1];
bool op;
void solve(int x,int y)
{
	if (op) return;
	int sx,sy;
	if ((c[x][y]=='B')+(c[x+1][y]=='W')+(c[x][y+1]=='W')+(c[x+1][y+1]=='B')==4)
	{
		op=1;
		return;
	}
	if ((c[x][y]=='W')+(c[x+1][y]=='B')+(c[x][y+1]=='B')+(c[x+1][y+1]=='W')==4)
	{
		op=1;
		return;
	}
	if ((c[x][y]=='B')+(c[x+1][y]=='W')+(c[x][y+1]=='W')+(c[x+1][y+1]=='B')==3)
	{
		if (c[x][y]=='?') c[x][y]='W',sx=x,sy=y;
		else if (c[x+1][y]=='?') c[x+1][y]='B',sx=x+1,sy=y;
		else if (c[x][y+1]=='?') c[x][y+1]='B',sx=x,sy=y+1;
		else if (c[x+1][y+1]=='?') c[x+1][y+1]='W',sx=x+1,sy=y+1;
		else return;
		if (sx!=1&&sy!=n) solve(sx-1,sy);
		if (sx!=n&&sy!=1) solve(sx,sy-1);
		if (sx!=1&&sy!=1) solve(sx-1,sy-1);
	}
	if ((c[x][y]=='W')+(c[x+1][y]=='B')+(c[x][y+1]=='B')+(c[x+1][y+1]=='W')==3)
	{
		if (c[x][y]=='?') c[x][y]='B',sx=x,sy=y;
		else if (c[x+1][y]=='?') c[x+1][y]='W',sx=x+1,sy=y;
		else if (c[x][y+1]=='?') c[x][y+1]='W',sx=x,sy=y+1;
		else if (c[x+1][y+1]=='?') c[x+1][y+1]='B',sx=x+1,sy=y+1;
		else return;
		if (sx!=1&&sy!=n) solve(sx-1,sy);
		if (sx!=n&&sy!=1) solve(sx,sy-1);
		if (sx!=1&&sy!=1) solve(sx-1,sy-1);
	}
	return;
}
int main()
{
	T=read();
	while (T--)
	{
		n=read(),m=read(),op=0;
		for (int i=1;i<=n;++i)
			for (int j=1;j<=m;++j)
				cin>>c[i][j];
		for (int i=1;i<=n-1;++i)
			for (int j=1;j<=m-1;++j)
				solve(i,j);
		if (op) puts("NO");
		else
		{
			puts("YES");
			for (int i=1;i<=n;++i)
				for (int j=1;j<=m;++j)
					if (c[i][j]=='?')
					{
						if (i&1) c[i][j]='W';
						else c[i][j]='B';
					}
			for (int i=1;i<=n;++i)
			{
				for (int j=1;j<=m;++j) printf("%c",c[i][j]);
				puts("");
			}
		}
	}
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3764kb

input:

3
2 2
??
??
3 3
BW?
W?B
?BW
3 3
BW?
W?W
?W?

output:

YES
WW
BB
NO
YES
BWW
WWW
WWW

result:

ok ok (3 test cases)

Test #2:

score: -100
Wrong Answer
time: 24ms
memory: 3704kb

input:

10000
9 2
BB
BW
WW
WW
?W
?B
B?
W?
BB
6 2
??
?B
B?
BW
WW
??
10 7
WBBBW??
???BWWW
???BWWB
??WWBW?
BBWBBWB
WWB?WW?
BWBW???
WWWWBBW
BBWBB?W
B?W?W?B
4 7
??WBWWB
?BBWWWB
?W?BBB?
BBBWBBB
10 1
B
W
?
B
B
W
W
W
B
?
10 4
??WW
W?W?
WWW?
???W
?W??
?W?W
W?W?
?W?W
???W
???W
8 3
WBW
W??
???
???
W?W
W?W
???
?W?
4 1
...

output:

YES
BB
BW
WW
WW
WW
BB
BW
WB
BB
YES
WW
BB
BW
BW
WW
BB
NO
NO
YES
B
W
W
B
B
W
W
W
B
B
YES
WWWW
WBWB
WWWW
BBBW
WWWW
BWBW
WWWW
BWBW
WWWW
BBBW
YES
WBW
WBB
WWW
BBB
WWW
WBW
WWW
BWB
YES
W
B
W
B
YES
WBWB
WBBB
YES
BWWBBB
BBWBWB
YES
WWWWW
YES
BWWWWW
WWBBBB
BBBWWW
WBWWBW
YES
W
YES
BWB
BBB
WBW
BBB
WWB
BBB
BWW
BBB...

result:

wrong answer There is a check pattern in (6, 0) (test case 1)