QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#99094 | #5071. Check Pattern is Good | 1kri | RE | 736ms | 7180kb | C++14 | 4.1kb | 2023-04-21 10:45:10 | 2023-04-21 10:45:13 |
Judging History
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?...