QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#99094#5071. Check Pattern is Good1kriRE 736ms7180kbC++144.1kb2023-04-21 10:45:102023-04-21 10:45:13

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-04-21 10:45:13]
  • 评测
  • 测评结果:RE
  • 用时:736ms
  • 内存:7180kb
  • [2023-04-21 10:45:10]
  • 提交

answer

#include <iostream>
#include <cstdio>
#include <cstring>
#define inf 1000000000
using namespace std;
struct FLOW{
	int n,m,s,t,u[100005],v[100005],w[100005],first[100005],nxt[100005];
	void init(int _s,int _t){
		n=_t,m=1,s=_s,t=_t;
		memset(first,0,sizeof(first));
		memset(nxt,0,sizeof(nxt));
		return;
	}
	void add(int a,int b,int c){
		int i=++m;
		u[i]=a,v[i]=b,w[i]=c;
		nxt[i]=first[u[i]],first[u[i]]=i;
		i=++m;
		u[i]=b,v[i]=a,w[i]=0;
		nxt[i]=first[u[i]],first[u[i]]=i;
		return;
	}
	int q[100005],head,tail,depth[100005],cur[100005];
	bool bfs(){
		for (int i=1;i<=n;i++)depth[i]=-1,cur[i]=first[i];
		depth[s]=0;
		head=tail=1;
		q[1]=s;
		while(head<=tail){
			int now=q[head];
			head++;
			for (int i=first[now];i;i=nxt[i])
				if (w[i]>0&&depth[v[i]]==-1){
					depth[v[i]]=depth[now]+1;
					q[++tail]=v[i];
					if (v[i]==t)return 1;
				}
		}
		return 0;
	}
	int dfs(int now,int in){
		if (now==t)return in;
		int out=0;
		for (int i=cur[now];i!=0&&in>0;i=nxt[i]){
			cur[now]=i;
			if (depth[v[i]]!=depth[now]+1||w[i]==0)continue;
			int qwq=dfs(v[i],min(in,w[i]));
			in-=qwq,out+=qwq;
			w[i]-=qwq,w[i^1]+=qwq;
		}
		return out;
	}
	int work(){
		int ans=0;
		while(bfs())ans+=dfs(s,inf);
		return ans;
	}
	int tot,a[100005],b[100005];
	int col[100005];
	void qwq_dfs(int now){
		col[now]=1;
		for (int i=first[now];i;i=nxt[i])
			if (w[i]>0&&col[v[i]]==0)qwq_dfs(v[i]);
		return;
	}
	void qwq(){
		tot=0;
		memset(col,0,sizeof(col));
		qwq_dfs(s);
		for (int i=2;i<=m;i+=2){
			if (col[u[i]]==1&&col[v[i]]==0){
				++tot;
				a[tot]=u[i],b[tot]=v[i];
			}
		}
		return;
	}
}flow;
int testcase,n,m;
char a[105][105];
int book0[105][105],book1[105][105];
int id(int x,int y){
	return (x-1)*m+y;
}
int main(){
	scanf("%d",&testcase);
	while(testcase--){
		scanf("%d%d",&n,&m);
		for (int i=1;i<=n;i++){
			scanf("%s",a[i]+1);
			for (int j=1;j<=m;j++){
				if ((i+j)&1){
					if (a[i][j]=='B')a[i][j]='W';
					else if (a[i][j]=='W')a[i][j]='B';
				}
			}
		}
		int s=2*n*m+1,t=2*n*m+2;
		flow.init(s,t);
		int ans=0;
		for (int i=1;i<n;i++)
			for (int j=1;j<m;j++){
				int c=0;
				if (a[i][j]!='W'&&a[i][j+1]!='W'&&a[i+1][j]!='W'&&a[i+1][j+1]!='W'){
					c++;
					flow.add(s,id(i,j),1);
				}
				if (a[i][j]!='B'&&a[i][j+1]!='B'&&a[i+1][j]!='B'&&a[i+1][j+1]!='B'){
					c++;
					flow.add(n*m+id(i,j),t,1);
				}
				ans+=c;
				if (c>0)flow.add(id(i,j),n*m+id(i,j),c);
			}
		for (int i=1;i<n;i++)
			for (int j=1;j<m;j++){
				if (i<n-1){
					flow.add(id(i,j)+n*m,id(i+1,j),inf);
					flow.add(id(i+1,j)+n*m,id(i,j),inf);
				}
				if (j<m-1){
					flow.add(id(i,j)+n*m,id(i,j+1),inf);
					flow.add(id(i,j+1)+n*m,id(i,j),inf);
				}
				if (i<n-1&&j<m-1){
					flow.add(id(i,j)+n*m,id(i+1,j+1),inf);
					flow.add(id(i+1,j+1)+n*m,id(i,j),inf);
				}
				if (i<n-1&&j>1){
					flow.add(id(i,j)+n*m,id(i+1,j-1),inf);
					flow.add(id(i+1,j-1)+n*m,id(i,j),inf);
				}
			}
		ans-=flow.work();
		printf("%d\n",ans);
		flow.qwq();
		memset(book0,0,sizeof(book0));
		memset(book1,0,sizeof(book1));
		for (int i=1;i<=flow.tot;i++){
			if (flow.a[i]==s){
				int x=flow.b[i]/m+1,y=flow.b[i]%m;
				if (y==0)x--,y=m;
				book0[x][y]=1;
			}
			if (flow.b[i]==t){
				int x=(flow.a[i]-n*m)/m+1,y=(flow.a[i]-n*m)%m;
				if (y==0)x--,y=m;
				book1[x][y]=1;
			}
			if (flow.b[i]==flow.a[i]+n*m){
				int x=flow.a[i]/m+1,y=flow.a[i]%m;
				if (y==0)x--,y=m;
				book0[x][y]=book1[x][y]=1;
			}
		}
		for (int i=1;i<n;i++)
			for (int j=1;j<m;j++){
				if (book0[i][j]==0&&a[i][j]!='W'&&a[i][j+1]!='W'&&a[i+1][j]!='W'&&a[i+1][j+1]!='W')
					a[i][j]=a[i][j+1]=a[i+1][j]=a[i+1][j+1]='B';
				if (book1[i][j]==0&&a[i][j]!='B'&&a[i][j+1]!='B'&&a[i+1][j]!='B'&&a[i+1][j+1]!='B')
					a[i][j]=a[i][j+1]=a[i+1][j]=a[i+1][j+1]='W';
			}
		for (int i=1;i<=n;i++){
			for (int j=1;j<=m;j++){
				if (a[i][j]=='?')a[i][j]='B';
				if ((i+j)&1){
					if (a[i][j]=='B')a[i][j]='W';
					else if (a[i][j]=='W')a[i][j]='B';
				}
				printf("%c",a[i][j]);
			}
			printf("\n");
		}
	}
	return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 3ms
memory: 6140kb

input:

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

output:

1
WB
BW
1
BWB
WWB
BBW
4
BWB
WBW
BWB

result:

ok ok (3 test cases)

Test #2:

score: 0
Accepted
time: 503ms
memory: 6184kb

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
WB
9
WBBBWWB
BWBBWWW
WBWBWWB
BWWWBWW
BBWBBWB
WWBWWWB
BWBWBBW
WWWWBBW
BBWBBBW
BBWBWWB
6
BWWBWWB
WBBWWWB
BWWBBBW
BBBWBBB
0
B
W
B
B
B
W
W
W
B
W
15
BWWW
WBWB
WWWB
WBBW
BWWB
BWBW
WBWB
BWBW
WBWW
BWBW
8
WBW
WWB
WBW
BWB
WBW
WBW
WBW
BWB
0
W
B
B
W
1
BBWB
WWBB
3
BW...

result:

ok ok (10000 test cases)

Test #3:

score: 0
Accepted
time: 516ms
memory: 6328kb

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
BBWWBW
WWBBWB
BWBWBW
BBWBWB
WWBWWB
BBWBBW
BWBWWB
WBBWBW
BWWBBW
0
W
W
B
W
B
W
B
W
B
W
15
WBWB
BWBW
WBWB
BWBB
WBWW
WBWB
WWBW
WBWB
BWWW
1
BW
WB
BB
4
BWBBWWB
WBWWBBW
20
WBWBWWWWW
BWBWBBWWW
WBWBWWBWW
WWBWWBWWW
WBBWBWBWW
BWBBBWWWW
WBWBWBWWW
WWWWBWWWW
BWWWWWWWB
28
WWBBWWWBWB
WBWBWBWWBW
BWBWBWBWBW
WBBWBW...

result:

ok ok (10000 test cases)

Test #4:

score: 0
Accepted
time: 502ms
memory: 6392kb

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
WBBBWWB
WWWBWBW
BBBWBBB
BBWBWWB
BWBWBBW
13
WBWWWB
WWBWBW
BWWWWB
WWWBWW
WWWBWB
WWBWBW
WBWWWB
WWBWBW
WWWBWW
WWBWWB
4
WBWBWW
BWBWBB
0
BWBWBWWW
1
WB
WB
BW
BB
BW
12
WBBWB
BWWBW
WBBWB
WWWWB
WBWBW
BWBBW
WBWWB
7
BBWBW
BWBWW
WWWBB
WBBWB
BWBWW
BWWBB
WBWWB
BBWBB
9
WWWW
WBWB
WWBW
WBWB
BWWB
BW...

result:

ok ok (10000 test cases)

Test #5:

score: 0
Accepted
time: 492ms
memory: 6312kb

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
B
18
WBWBWWBWB
BWBWBBWBW
BBBBWBWBW
WWWWBWWWB
WWBBWBWBW
WBWWBWWWW
BWWWBWBWB
5
WBBBBBW
BWBWWWB
BBWBBBW
0
BBBWWB
0
W
W
W
B
B
W
B
23
WWBBWBBW
WWWWBWWB
BBWBWWWW
WWBWBWBW
BBWBWBWB
BWBWBWWB
BWBWWBWB
BBWBBWBW
19
WWWBWBBW
WBBWBWBW
WWBWBWBW
WWWWBWWB
WBWBWBBW
BWBBWBWB
WBWWBWWB
WWBWBBWW
WBWBWWWW
WWWWBBWB
0
WB...

result:

ok ok (10000 test cases)

Test #6:

score: 0
Accepted
time: 495ms
memory: 6828kb

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
B
B
W
W
B
W
B
0
WWBWBWBBWB
10
BWWBBWBW
WBBWWBWW
BWWBWWBW
BBBWBBBB
WBWBBBBW
2
WB
BW
WB
WB
WW
WB
0
WWBWBWBBWW
6
BWB
WBW
BWB
WBW
26
WWBBBWWBWB
WWWBWWBWBW
BWWBWBWBWW
WBWBWBBBBB
BWBBBBWBBW
BWWBWWBWBB
WBBBBBWBBB
BBWBWBWBBW
BWBWBWBWBW
WBBWWBWBWB
0
BWBWBW
4
WBBWW
BWWWW
WWWWB
WWWBW
WWBBW
WBWWB
0
B
B
B
...

result:

ok ok (10000 test cases)

Test #7:

score: 0
Accepted
time: 736ms
memory: 6996kb

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
BBBWWWWWWW
WWBBWWWWWW
WBWWBWWWBW
BWWWWWWWBW
WBBWWWBBWB
WBWWWBWWBW
WWWWBWWBWB
WWWBWWBWWB
24
WBBWBBWWWB
BWWWWBWBBW
WBBBWWBBWB
WBWBWBWWBW
BBWBWWBWWB
WWBWBBWWBW
BBWBBWBWBW
WWBWWWWBWB
BWBWWWWBWW
WWWWWWBWWB
33
WBWWBWBWWW
BWWBWBWBWB
WBWBBWWBWW
WWBWWWBWWB
BWWBWWBWWB
WWWWBWWWBW
BWBBW...

result:

ok ok (10000 test cases)

Test #8:

score: 0
Accepted
time: 723ms
memory: 6188kb

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
WBWBBBWBBB
BWBBBBBBBB
31
BWWBWWBWBW
WBBWWBBBWB
BWWBBWWBWB
BWWBWBBWBW
BWBWWWWBWB
BBWBWBWWBB
BWBBWWBBWB
BBBWBBWBWB
WBWBWBBWBW
WBBWBBWWWB
33
WBWWWBBWBB
BWWBBWWBWW
WBBWWBWBWW
BWWBBWBWBB
WWBWWBBBWW
BBWBWBWWWW
BWBWB...

result:

ok ok (10000 test cases)

Test #9:

score: 0
Accepted
time: 503ms
memory: 6780kb

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
WWWWBWBWBBBBBWBBWBBWWWBBBBBBWWBWBWWWBWBBBBBBBWBBBBBWBBBWBWWWBBBBBBWWBWBBBWBWBBBWBWBWWWBBWWBWBWWWBWBW
0
BWBWBWBWBBBBBBWBWBBWBWWBBBBBBBBWBBBBBWWWBWBBBWBWWBBWBWBWWWBBBBBWWBBWBBBWBWBBBWBBWWWWBBWWBWBBBBBBBBWB
0
WWBWBWBBBWBBBBBWBWBWBWWWBWBWBWBBBWBWBWBWBBWWBWBBBWBWBWBWBWBWBBBWBBBBBBBWBBBWBWBWWWBWBWWWBBBW...

result:

ok ok (10000 test cases)

Test #10:

score: 0
Accepted
time: 561ms
memory: 6720kb

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
B
W
B
W
B
B
B
W
B
W
B
B
B
B
W
W
B
W
B
B
B
B
B
W
W
W
B
W
B
B
B
W
W
W
B
B
B
B
B
W
B
W
B
W
W
B
W
B
B
B
W
W
B
B
B
B
B
W
B
W
W
B
B
W
B
W
W
B
B
W
B
B
B
B
B
W
B
B
B
B
B
W
B
W
0
B
W
B
W
B
W
W
W
W
W
B
W
B
W
B
B
B
W
B
B
W
W
W
W
B
W
B
W
W
W
B
W
W
W
W
W
B
W
W
W
B
W
B
W
B
B
W
B
...

result:

ok ok (10000 test cases)

Test #11:

score: 0
Accepted
time: 464ms
memory: 6276kb

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
WWWBWWWWBW
WWBWBWBBWW
WBWWWBWWBW
WBBBWWWBWB
BWWWWWWWBW
BWWWWBWBWB
WBWBWWWWBW
WWBWBBWWWB
WWWBWWBWBW
WBWBWWWBWB
BWBWBWWWWB
WWBWWBWWBW
WBWBBWBWWW
BWWBBWWBWW
BWBWWBBWWB
WBWWWWWBBW
BWWWBWWWWB
WBWBWBBWBW
BWBWBWBWBW
WWWBWWWWBW
BWBWWWBWWB
WBWWWWWWBW
BWBWWBBWBW
WBWBBWWWWB
WWWBWBBWWW
BBBWBWWBWB
WBWBWWBWBW...

result:

ok ok (1000 test cases)

Test #12:

score: 0
Accepted
time: 458ms
memory: 7180kb

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
BBWBWBWWBBBBWBWBBBWBWWWWBBBWBWBBWBWWBWBWWBWBBWBWBWBWWBWBBBWWBWBWBWBWWBWWWBWBBWBWBBWWWBBBBWWBBWBWBBWB
BWBWBWWWWBWBBBBWWWBWWBWBWBWBWWBWBWBBWWWBWBBWBBWBWBWBBWBWBWWBWBBBBWBWBWBWWWBWWBWBWBWBBWWWWBBWBBWBWWBW
WBWBBBWWBWBBBWWWWBBWBWBBBWWWBBWBWBBBWBBWBWBBWWBWBWBWBWWBWBBWWWWWWBBBWWBWBWBBBWBBWWBBBWBWWBWBWW...

result:

ok ok (1000 test cases)

Test #13:

score: -100
Runtime Error

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:


result: