QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#642061#5071. Check Pattern is GoodsyxsyxTL 208ms5884kbC++143.5kb2024-10-15 09:28:502024-10-15 09:28:50

Judging History

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

  • [2024-10-15 09:28:50]
  • 评测
  • 测评结果:TL
  • 用时:208ms
  • 内存:5884kb
  • [2024-10-15 09:28:50]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=105,M=100005;
const int inf=0x3f3f3f3f;
int dx[]={1,1,1,0,0};
int dy[]={1,0,-1,-1,0};
int T;
int n,m;
int a[N][N],vid[N][N][2];
int typ[N][N],res[N][N];
void upd(int x,int y)
{
	if(a[x][y]!='B'&&a[x+1][y+1]!='B'&&a[x+1][y]!='W'&&a[x][y+1]!='W') typ[x][y]|=1;
	if(a[x][y]!='W'&&a[x+1][y+1]!='W'&&a[x+1][y]!='B'&&a[x][y+1]!='B') typ[x][y]|=2;
	if(a[x][y]!='?'&&(a[x+1][y]==a[x][y]||a[x][y+1]==a[x][y])) typ[x][y]=0;
	if(a[x+1][y+1]!='?'&&(a[x+1][y]==a[x+1][y+1]||a[x][y+1]==a[x+1][y+1])) typ[x][y]=0;
}
void update(int x,int y,int t)
{
	if(t==0) return;
	if((x+y)%2==1) t=3-t;
//	printf("%d %d %d\n",x,y,t);
	if(t==1) a[x][y]=a[x+1][y+1]='W',a[x+1][y]=a[x][y+1]='B';
	if(t==2) a[x][y]=a[x+1][y+1]='B',a[x+1][y]=a[x][y+1]='W';
}
int cnt,tp[M];
void init()
{
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
			typ[i][j]=0;
			vid[i][j][0]=vid[i][j][1]=0;
			res[i][j]=0;
		}
	cnt=0;
}
int s,t;
int tot,h[M];
struct E{int v,c,nxt;}e[M];
void add(int u,int v,int c)
{
	e[++tot].v=v;
	e[tot].c=c;
	e[tot].nxt=h[u];
	h[u]=tot;
}
void addedge(int u,int v,int c)
{
//	printf("%d %d %d\n",u,v,c);
	add(u,v,c);
	add(v,u,0);
}
int dep[M];
queue <int> q;
bool bfs()
{
	for(int i=1;i<=t;i++) dep[i]=-1;
	q.push(s);
	dep[s]=0;
	while(!q.empty())
	{
		int x=q.front();q.pop();
		for(int i=h[x];i!=-1;i=e[i].nxt)
		{
			int v=e[i].v,c=e[i].c;
			if(dep[v]!=-1||!c) continue;
			dep[v]=dep[x]+1;
			q.push(v);
		}
	}
	return dep[t]!=-1;
}
int cur[M];
int dfs(int x,int flow)
{
	if(x==t) return flow;
	int res=0;
	for(int &i=cur[x];i!=-1;i=e[i].nxt)
	{
		int v=e[i].v,c=e[i].c;
		if(dep[v]!=dep[x]+1||!c) continue;
		int tmp=dfs(v,min(c,flow));
		flow-=tmp;res+=tmp;
		e[i].c-=tmp,e[i^1].c+=tmp;
		if(!flow) break;
	}
	if(flow) dep[x]=-1;
	return res;
}
int dinic()
{
	int ans=0;
	while(bfs())
	{
		for(int i=1;i<=t;i++) cur[i]=h[i];
		ans+=dfs(s,inf);
	}
//	printf("%d\n",ans);
	return ans;
}
int vis[M];
void dfs(int x)
{
	if(vis[x]) return;
	vis[x]=1;
	for(int i=h[x];i!=-1;i=e[i].nxt)
	{
		int v=e[i].v,c=e[i].c;
		if(!c) continue;
		dfs(v);
	}
}
void init2()
{
	tot=1;
	s=cnt+1,t=cnt+2;
	for(int i=1;i<=t;i++)
	{
		h[i]=-1;
		vis[i]=0;
	}
}
int main()
{
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d",&n,&m);
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++) scanf(" %c",&a[i][j]);
		init();
		for(int i=1;i<n;i++)
			for(int j=1;j<m;j++)
			{
				upd(i,j);
				if(typ[i][j]&1) vid[i][j][(0+i+j)%2]=++cnt,tp[cnt]=(0+i+j)%2;
				if(typ[i][j]&2) vid[i][j][(1+i+j)%2]=++cnt,tp[cnt]=(1+i+j)%2;
			}
		init2();
		for(int i=1;i<n;i++)
			for(int j=1;j<m;j++)
				for(int d=0;d<5;d++)
				{
					int nx=i+dx[d],ny=j+dy[d];
					if(nx<1||ny<1||nx>n||ny>m) continue;
					if(vid[i][j][0]&&vid[nx][ny][1]) addedge(vid[i][j][0],vid[nx][ny][1],inf);
					if(vid[i][j][1]&&vid[nx][ny][0]) addedge(vid[nx][ny][0],vid[i][j][1],inf);
				}
		for(int i=1;i<=cnt;i++)
		{
			if(tp[i]==0) addedge(s,i,1);
			if(tp[i]==1) addedge(i,t,1);
		}
		printf("%d\n",cnt-dinic());
		dfs(s);
		for(int i=1;i<n;i++)
			for(int j=1;j<m;j++)
			{
				if(vid[i][j][0]&&vis[vid[i][j][0]]) res[i][j]=1;
				if(vid[i][j][1]&&!vis[vid[i][j][1]]) res[i][j]=2;
			}
		for(int i=1;i<n;i++)
			for(int j=1;j<m;j++) update(i,j,res[i][j]);
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++) if(a[i][j]=='?') a[i][j]='W';
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++) printf("%c",a[i][j]);printf("\n");}
	}
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 5872kb

input:

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

output:

1
BW
WB
1
BWW
WBB
WBW
4
BWB
WBW
BWB

result:

ok ok (3 test cases)

Test #2:

score: 0
Accepted
time: 40ms
memory: 5824kb

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:

3
BB
BW
WW
WW
BW
WB
BW
WB
BB
2
BW
WB
BW
BW
WW
WW
9
WBBBWWW
WBWBWWW
BWBBWWB
WBWWBWW
BBWBBWB
WWBBWWW
BWBWBWB
WWWWBBW
BBWBBWW
BWWWWBB
6
BWWBWWB
WBBWWWB
BWWBBBW
BBBWBBB
0
B
W
W
B
B
W
W
W
B
W
15
BWWW
WBWW
WWWB
WBBW
BWWB
BWBW
WBWB
BWBW
WBWW
BWBW
8
WBW
WWB
WBW
BWB
WBW
WBW
BWB
WWW
0
W
B
W
W
1
WBWB
WWBB
3
BW...

result:

ok ok (10000 test cases)

Test #3:

score: 0
Accepted
time: 43ms
memory: 3916kb

input:

10000
9 6
?B?W?W
WWBBWB
?WB?BW
B?W?W?
WW??W?
B???BW
?W?WW?
W?B?B?
?W?BB?
10 1
W
?
?
?
?
?
?
?
B
W
9 4
????
????
W???
?W?B
??WW
?BW?
WW?W
??W?
??W?
3 2
?W
?B
BB
2 7
?W?BWWB
??W???W
9 9
?BW?WWW?W
BW?WBBWWW
W?W????WW
W??WW??WW
W?BWB?B?W
??BB?WWWW
W???WBW?W
WWW???WWW
B?WWWWWW?
8 10
W??BWWW??B
?BWBWBW?BW...

output:

21
WBWWBW
WWBBWB
WWBWBW
BBWBWB
WWBWWB
BBWBBW
BWBWWB
WBBWBW
BWWBBW
0
W
W
W
W
W
W
W
W
B
W
15
WBWB
BWBW
WBWB
BWBB
WBWW
WBWB
WWBW
WBWB
BWWW
1
BW
WB
BB
4
BWBBWWB
WBWWBBW
20
WBWBWWWWW
BWBWBBWWW
WBWBBWBWW
WWBWWBWWW
WBBWBWBWW
BWBBWWWWW
WBWBWBWWW
WWWWBWWWW
BWWWWWWWW
28
WWBBWWWWWB
WBWBWBWBBW
BWBWBWBWBW
WBWWBW...

result:

ok ok (10000 test cases)

Test #4:

score: 0
Accepted
time: 39ms
memory: 5880kb

input:

10000
7 7
?B??BBW
????BB?
WBBB??B
WW?B???
?B??BBB
BBWB??B
B???BB?
10 6
W?WW??
W??W??
?WWWW?
?WW?WW
WW??W?
W?????
W?WW??
WW???W
WWW??W
?W??W?
2 6
?B??W?
B???BB
1 8
??BWB?W?
5 2
WB
W?
B?
BB
?W
7 5
W????
?WW??
???W?
WWWW?
W?W?W
?W?B?
W?WWB
8 5
B?WBW
B??WW
WWW?B
WBBWB
BW?WW
B?W?B
??WWB
BBW?B
10 4
WWWW
?...

output:

15
WBWBBBW
BWBWBBW
WBBBBWB
WWWBWBW
WBBWBBB
BBWBWWB
BWBWBBW
13
WWWWWB
WBWWBW
BWWWWB
WWWBWW
WWBWWW
WBWBWB
WBWWBW
WWBBWW
WWWWBW
WWWBWB
4
WBWBWW
BWBWBB
0
WWBWBWWW
1
WB
WB
BW
BB
WW
12
WBBWB
BWWBW
WBBWB
WWWWB
WBWBW
BWBBW
WBWWB
7
BBWBW
BWBWW
WWWBB
WBBWB
BWBWW
BBWBB
WWWWB
BBWWB
9
WWWW
WBWB
WWBW
WBWB
BWWB
BW...

result:

ok ok (10000 test cases)

Test #5:

score: 0
Accepted
time: 39ms
memory: 3856kb

input:

10000
1 1
?
7 9
W?WB????B
?WB??B??W
BBB?W?WB?
WWW??WWW?
WW?B??W?W
?BWW??WWW
B?WW?W?WB
3 7
??BBBB?
BW?WW??
B??B?BW
1 6
?B?WWB
7 1
W
W
W
B
?
W
?
8 8
WW??W?B?
WWW?????
BB??WWWW
?W???WBW
BBW???WB
BWBWBWW?
?W?WW??B
BB?????W
10 8
WWW?W?BW
WB?W?WBW
WW?W?WBW
WWWW?WW?
WBWB?B?W
BW?BW??B
??WWBWWB
W?BW?BWW
W?W?...

output:

0
W
18
WBWBWWBWB
BWBWBBWBW
BBBBWBWBW
WWWWBWWWB
WWBBWBWBW
WBWWWBWWW
BWWWBWBWB
5
WBBBBBW
BWBWWWB
BBWBWBW
0
WBWWWB
0
W
W
W
B
W
W
W
23
WWWBWWBW
WWWWBBWB
BBWBWWWW
WWBWBWBW
BBWBWBWB
BWBWBWWW
WWBWWBWB
BBWBBWBW
19
WWWBWBBW
WBWWBWBW
WWBWWWBW
WWWWBWWB
WBWBWBBW
BWBBWBWB
WBWWBWWB
WWBWWBWW
WBWBWWWW
WWWWBBWB
0
WB...

result:

ok ok (10000 test cases)

Test #6:

score: 0
Accepted
time: 44ms
memory: 5884kb

input:

10000
9 1
W
B
?
B
W
W
?
W
B
1 10
W??????BWB
5 8
??W??WB?
?B?WWB?W
??????B?
BB??BBBB
WB??BBB?
6 2
?B
??
WB
?B
WW
W?
1 10
WW??BW?BW?
4 3
BW?
???
B?B
??W
10 10
WW?BBW?BW?
WW?BW?????
?WWBW?WB?W
???B?BBBBB
??BBBB?BBW
?WW??W?WBB
W??BB?WBBB
BBWBW?WBBW
?W????BWB?
??BW??WBWB
1 6
??B???
6 5
WBB?W
?WWWW
WWWW?
...

output:

0
W
B
W
B
W
W
W
W
B
0
WWWWWWWBWB
10
BWWWBWBW
WBWWWBWW
BWBWBWBW
BBWBBBBB
WBBWBBBW
2
WB
BW
WB
WB
WW
WW
0
WWWWBWWBWW
6
BWB
WBW
BWB
WBW
26
WWWBBWWBWB
WWWBWBBWBW
BWWBWWWBWW
WBWBWBBBBB
BWBBBBWBBW
WWWWWWBWBB
WWBBBWWBBB
BBWBWBWBBW
BWBWBWBWBW
WBBWWBWBWB
0
WWBWWW
4
WBBWW
BWWWW
WWWWB
WWWBW
WWBBW
WBWWB
0
B
B
B
...

result:

ok ok (10000 test cases)

Test #7:

score: 0
Accepted
time: 149ms
memory: 5880kb

input:

10000
10 10
?W?WW?W??W
?BWBW?BBWW
?BB?WWW?W?
W?B?WWWWWW
?BWW?WWW?W
BWWWWWWW?W
WBBWW??B??
W??WW?W??W
WWWW?WW?W?
?W?BWW?WW?
10 10
WB?WBBWWWB
?WWWW?WB??
?B?BWW?BW?
WBWBW??W?W
B?WB?WBWWB
WWBWBBWW??
??WBBWBWBW
WWB??WWBWB
B?BWWWWBWW
WW?WWWBWWB
10 10
??W????WW?
?WW?W???W?
??W??WW?W?
WW??WW?WW?
?W??WW?WW?
?...

output:

20
BWBWWBWWBW
WBWBWWBBWW
WBBWWWWWWW
WWBBWWWWWW
WBWWBWWWWW
BWWWWWWWBW
WBBWWWBBWB
WWWWWBWWBW
WWWWBWWBWB
WWWBWWBWWW
24
WBWWBBWWWB
BWWWWBWBBW
WBWBWWBBWB
WBWBWBWWBW
BWWBBWBWWB
WWBWBBWWWB
WBWBBWBWBW
WWBWWWWBWB
BWBWWWWBWW
WWWWWWBWWB
33
WBWWBWBWWW
BWWBWBWBWW
WBWWBWWBWW
WWBBWWBWWW
WWWBWWWWWB
WWWWBWWWBW
BWBBW...

result:

ok ok (10000 test cases)

Test #8:

score: 0
Accepted
time: 147ms
memory: 5880kb

input:

10000
10 10
?BBBBWBBB?
??W???WB??
BB?W???BB?
?B???BBB??
W??BB?WBBB
?B?B???W?W
?????BB???
?BW???B???
???BBB??BB
BWBBBBBBB?
10 10
BWW?WWB?BW
??B?WBBBWB
B??BB??BWB
BW?BWB???W
?WB?WWW?W?
B??B??W?BB
?WBB?WBB?B
BB??BBWBW?
WB??WBB?BW
?B???B?W??
10 10
??WWWB??BB
?WW???WBWW
???W??W?WW
?W?B?W?W??
WWB?WBB??W
B...

output:

34
WBBBBWBBBW
BWWBWBWBWB
BBBWBWBBBW
WBWBWBBBWB
WWBBBWWBBB
WBWBWBBWBW
BWBWBBBBWB
WBWBWWBWBW
BWBBBBWBBB
BWBBBBBBBW
31
BWWBWWBWBW
WBBWWBBBWB
BWWBBWWBWB
BWWBWBBWBW
WWBWWWWBWB
BBWBWBWWBB
WWBBBWBBWB
BBWWBBWBWB
WBWBWBBWBW
WBBWBBWWWB
33
WBWWWBBWBB
BWWBBWWBWW
WBBWWBWBWW
BWWBBWBWBW
WWBWWBBBWW
BBWBWBWWWW
WWBWB...

result:

ok ok (10000 test cases)

Test #9:

score: 0
Accepted
time: 59ms
memory: 5876kb

input:

10000
1 100
WWW?BWB?BB?BBW?BWBB?W??B?B?BWWBWB?WWB??BBBBB??BBBBB?BBBWBWWW?B?BBBWW??BBBW???B???W??W??BW?B?B?W??WB?
1 100
?WBW?WB?BBBB?BWBWB???WWB?BBB?BBW?B?B??W?B??BBW??WBBW???WW?BBBB?WWB?WBB???WBBB?BBW?W??BW?B??BBBBBBBWB
1 100
W?????BBB?BB?BB?????BWWWB?B???BB??????B??BWW???B??B?B???????BBB??B?BBB???B...

output:

0
WWWWBWBWBBWBBWWBWBBWWWWBWBWBWWBWBWWWBWWBBBBBWWBBBBBWBBBWBWWWWBWBBBWWWWBBBWWWWBWWWWWWWWWBWWBWBWWWWWBW
0
WWBWWWBWBBBBWBWBWBWWWWWBWBBBWBBWWBWBWWWWBWWBBWWWWBBWWWWWWWBBBBWWWBWWBBWWWWBBBWBBWWWWWBWWBWWBBBBBBBWB
0
WWWWWWBBBWBBWBBWWWWWBWWWBWBWWWBBWWWWWWBWWBWWWWWBWWBWBWWWWWWWBBBWWBWBBBWWWBBWWWWWWWWWWWWWWBWW...

result:

ok ok (10000 test cases)

Test #10:

score: 0
Accepted
time: 76ms
memory: 3980kb

input:

10000
100 1
W
B
B
?
B
B
B
?
B
B
B
B
W
B
B
B
?
?
B
?
B
B
?
W
B
W
?
B
?
B
W
W
?
W
?
B
?
B
B
?
W
W
B
?
B
B
?
?
W
W
B
B
?
B
B
?
B
?
?
?
W
B
W
B
?
B
W
?
?
B
B
B
B
?
B
?
W
B
B
W
B
?
W
B
B
?
B
B
?
B
?
W
?
B
?
B
B
?
B
W
100 1
?
W
?
W
?
W
W
W
W
W
B
W
?
?
B
B
?
W
?
B
W
W
W
W
?
?
?
?
W
W
B
W
W
W
W
W
?
W
W
W
?
...

output:

0
W
B
B
W
B
B
B
W
B
B
B
B
W
B
B
B
W
W
B
W
B
B
W
W
B
W
W
B
W
B
W
W
W
W
W
B
W
B
B
W
W
W
B
W
B
B
W
W
W
W
B
B
W
B
B
W
B
W
W
W
W
B
W
B
W
B
W
W
W
B
B
B
B
W
B
W
W
B
B
W
B
W
W
B
B
W
B
B
W
B
W
W
W
B
W
B
B
W
B
W
0
W
W
W
W
W
W
W
W
W
W
B
W
W
W
B
B
W
W
W
B
W
W
W
W
W
W
W
W
W
W
B
W
W
W
W
W
W
W
W
W
W
W
B
W
W
B
W
B
...

result:

ok ok (10000 test cases)

Test #11:

score: 0
Accepted
time: 208ms
memory: 4208kb

input:

1000
100 10
WWWB?WWW?W
W????????W
WB?W??WW?W
WBB?WWW??B
?WWWW?WW?W
?WWWW?W?WB
?B??W?W???
WW?W?BWWW?
WW?B?W?W?W
????WW??W?
BWB??WWWW?
W??W??WW??
W?WBB??WWW
?WWBBWW?WW
?WBWW?B???
???WWW???W
??WW?WWW??
????W?BW?W
???W?W?W?W
?WW?WW?WB?
BW??WW?WW?
WB?WWWWW?W
??BWW??W?W
W??B?WWWW?
WWW?W??WWW
BBBW??W?W?
??...

output:

335
WWWBBWWWBW
WWWBWBWBWW
WBBWBWWWBW
WBBBWWWBWB
BWWWWWWWBW
BWWWWWWBWB
WBWBWWWWBW
WWBWBBWWWB
WWBBWWBWBW
WBWBWWWBWB
BWBWBWWWWB
WBWWWBWWBW
WBWBBWBWWW
BWWBBWWBWW
BWBWWBBWBW
WBWWWWWBWW
BWWWBWWWBW
WBWBWBBWWW
BWBWBWWWWW
WWWBWWWWBW
BWBWWWWWWB
WBWWWWWWBW
BWBWWBWWBW
WBWBBWWWWB
WWWBWWBWWW
BBBWBBWBWB
WBWBWWBWBW...

result:

ok ok (1000 test cases)

Test #12:

score: 0
Accepted
time: 198ms
memory: 4344kb

input:

1000
10 100
BBWB??W??B?BWB?BBB??WWWW?B???WBB??WW???WWBW?B??W??BW?BWBBBW?BWBW?WBW?B?WWB??B?B?BBWWWBBBBW?BB???B?WB
??????WWWBWBBB??W??WW??BWBW??W??????WWWB?B??B?????W?B?????W??BBBBWBW??BWWWB???WBWB?BB?WW?B????W?WWB?
WB?BBBW?B??BB?WWW?B??WBB??W?BBW??BB??BB???BB??B??WB??W?B?B?WWWWW?BB??W?W?WBB??B?WWBBB?...

output:

330
BBWBWBWWWBWBWBWBBBWBWWWWBBBWBWBBWBWWBWBWWBWWBWBWBWBWWBWBBBWWBWBWWWBWWBWWWBWWBWBWBBWWWBBBBWWBBWBWBBWB
BWBWBWWWWBWBBBBWWWBWWBWBWBWBWWBWBWBBWWWBWBWWBBWBWBWBBWBWBWWBWBBBBWBWBWBWWWBBWBWBWBWBBBWWWBBWWBWBWWBW
WBWBBBWWBWBBBWWWWBBWBWBBBWWWBBWBWBBBWBBWBWBBWWBWBWBWBWBBWBBWWWWWBBBBWWWWBWBBBWBWWWBBBWBWWBWBWW...

result:

ok ok (1000 test cases)

Test #13:

score: -100
Time Limit Exceeded

input:

100
100 100
?WW?WW??WWW??BBW??WW??W???W?W?W?????W?W?BWBW??WBW????W??BB??BW?W??W????WBW?????WWB??BWW????W??W??WW?
B?????WW???B?BWWWB?WWW?WB?BB??????W??W?BWWW?BB??WWBWB?WWW????WW?W??BB?BBWB?W????W???BWWW??BBWWW???BW
W?BW??????WBB?B????W?BBW????BBW????W?W?????B?B??WW??????WWWWW?W??WW?WBW??W??W????BWWB?...

output:

4352
WWWWWWBBWWWWBBBWBWWWWBWBWBWWWBWWBWBWWBWWBWBWWWWBWBWBWWBWBBWBBWBWBWWWWBWWBWWBWBWWWBWBBWWBWBWWBWWWBWWB
BBWBWBWWBWBBWBWWWBWWWWBWBWBBWWBBWBWBWWBBWWWBBBWBWWBWBBWWWWBWBWWBWBWBBWBBWBBWBWBWWWBWBWWWBWBBWWWBWBBW
WWBWBWBWWBWBBWBWBWBWWBBWWBWWBBWWBWBWBWWBWBWBWBBWWWWWBWBWWWWWWBWWBWWBWBWWBWWBWBWBWBWWBWWBBBWWW...

result: