QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#642061 | #5071. Check Pattern is Good | syxsyx | TL | 208ms | 5884kb | C++14 | 3.5kb | 2024-10-15 09:28:50 | 2024-10-15 09:28:50 |
Judging History
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");}
}
}
详细
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...