ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#200515 | #536. 打地鼠 | wosile | 100 | 68ms | 3252kb | C++11 | 2.2kb | 2024-01-04 11:56:58 | 2024-01-04 12:08:17 |
answer
#include<bits/stdc++.h>
using namespace std;
int n,m;
char a[1005][1005],b[1005][1005];
int cntr[1005],cntc[1005];
int coverr[1005],coverc[1005];
queue<int>qx,qy;
int vis[1005][1005];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%s",a[i]+1);
for(int i=1;i<=n;i++)scanf("%s",b[i]+1);
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(b[i][j]=='X'){
cntr[i]++;
cntc[j]++;
}
int fl=1;
int nc=0;
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){
nc|=(a[i][j]!=b[i][j]);
if(cntr[i]>1 && cntc[j]>1){
if(a[i][j]!=b[i][j])fl=0;
}
if(cntr[i]<=1 && cntc[j]>1){
if(a[i][j]<b[i][j])fl=0;
if(a[i][j]>b[i][j])coverr[i]=1;
if(b[i][j]=='X'){
if(coverr[i]==1)fl=0;
else coverr[i]=-1;
}
}
if(cntc[j]<=1 && cntr[i]>1){
if(a[i][j]<b[i][j])fl=0;
if(a[i][j]>b[i][j])coverc[j]=1;
if(b[i][j]=='X'){
if(coverc[j]==1)fl=0;
else coverc[j]=-1;
}
}
}
int fe=0,st=0;
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(cntr[i]<=1 && cntc[j]<=1){
// printf("%d %d %c %d %d\n",i,j,a[i][j],coverr[i],coverc[j]);
if(coverr[i]>=0 && coverc[j]>=0 && b[i][j]=='X')fe=1;
if(a[i][j]=='O' && coverr[i]>=0 && coverc[j]>=0){
// printf("???\n");
qx.push(i);
qy.push(j);
vis[i][j]=1;
}
}
while(!qx.empty()){
int fx=qx.front();qx.pop();
int fy=qy.front();qy.pop();
// printf("bfs %d %d\n",fx,fy);
if(fx==0){
for(int i=1;i<=n;i++)if(cntr[i]<=1 && vis[i][fy]==0){
vis[i][fy]=1;
qx.push(i);
qy.push(fy);
}
}
else if(fy==0){
for(int i=1;i<=m;i++)if(cntc[i]<=1 && vis[fx][i]==0){
vis[fx][i]=1;
qx.push(fx);
qy.push(i);
}
}
else{
if(coverr[fx]>=0 && coverc[fy]>=0){
if(vis[fx][0]==0){
qx.push(fx);
qy.push(0);
vis[fx][0]=1;
}
if(vis[0][fy]==0){
qx.push(0);
qy.push(fy);
vis[0][fy]=1;
}
}
}
}
for(int i=1;i<=n;i++)if(coverr[i]==1)fl&=vis[i][0];
for(int i=1;i<=m;i++)if(coverc[i]==1)fl&=vis[0][i];
// printf("%d\n",fl);
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(cntr[i]<=1 && cntc[j]<=1 && a[i][j]!=b[i][j]){
fl&=vis[i][j];
// printf("%d %d vis=%d\n",i,j,vis[i][j]);
}
fl&=(nc==0 || fe==1);
printf("%d",fl);
return 0;
}
// quod erat demonstrandum
Details
小提示:点击横条可展开更详细的信息
Subtask #1:
score: 20
Accepted
Test #1:
score: 20
Accepted
time: 0ms
memory: 1264kb
input:
4 4 OOOX XXXX OOXO XXOO OOXX OOOO XOOX XOOX
output:
0
result:
ok "0"
Test #2:
score: 0
Accepted
time: 1ms
memory: 1272kb
input:
4 4 OXXO OXOX XOOX XOOO OOOO OXOO OXXX XOOO
output:
0
result:
ok "0"
Test #3:
score: 0
Accepted
time: 0ms
memory: 1264kb
input:
4 4 OOXX XXOX OXOX XXXX XXOO XOXO OOOX XXXO
output:
0
result:
ok "0"
Test #4:
score: 0
Accepted
time: 0ms
memory: 1272kb
input:
4 4 XXXX XXOO OXOX XXXO OXXO OOOX XOOO OXXO
output:
1
result:
ok "1"
Test #5:
score: 0
Accepted
time: 0ms
memory: 1272kb
input:
4 4 XOOO XXXX XOOX XOXO OXOO XOOO XOOO OOOO
output:
1
result:
ok "1"
Test #6:
score: 0
Accepted
time: 0ms
memory: 1268kb
input:
4 4 OOOO XOOO OOOO OXOX OOXO OOOO OOOX OOOO
output:
1
result:
ok "1"
Subtask #2:
score: 30
Accepted
Test #7:
score: 30
Accepted
time: 0ms
memory: 1348kb
input:
50 50 XOOOOOXOXXOOOOXXOOOXXXXXXOOOOOXOXOXXXXOXOOXXXXXOOO OXOOXOOOOXXOOOOXOOXXXOOXXXXXOXXOXOXXOOOXOXO...
output:
0
result:
ok "0"
Test #8:
score: 0
Accepted
time: 0ms
memory: 1352kb
input:
50 50 XXXXXOXXOOOOXXOXOOXOOOOXXOOOOXOOXOOOXXOOOOOXOXXXOO OXXXOXXXOOXOOXXXOOXOXXXOXOOXOOOXOXXXXXXXXXO...
output:
0
result:
ok "0"
Test #9:
score: 0
Accepted
time: 0ms
memory: 1352kb
input:
50 50 XOOOOOXOOOOXXOXXOXXOOXXOXXOXOXOOOXXXOXXXXOOXOOOXXO OOOOXXXOXOOOXXXXOOXOXXXOOOXXOXOOOXXOXXOOOXX...
output:
0
result:
ok "0"
Test #10:
score: 0
Accepted
time: 0ms
memory: 1364kb
input:
50 50 OOOXXXOOXXOOOXOXOOXXOOXXOOXOXXXXOOXOOOOOXXXOXOOXOO XXXXXOXXXXXXXOOOOXXXOXXXOXOXXXOOXXOOOOOXXXX...
output:
1
result:
ok "1"
Test #11:
score: 0
Accepted
time: 0ms
memory: 1372kb
input:
50 50 OXXOOXOOXXOXXXOOXOXOXXXOXXOXOOOXOOOXOOOOOOOOOOOOXO XXXOOXOOXXXOOOOXOXOOXXXOXOXOXOXOOXXOOOXOXXO...
output:
1
result:
ok "1"
Test #12:
score: 0
Accepted
time: 0ms
memory: 1364kb
input:
50 50 XOOOXXXXOXOXXXXOXOOXXXOOOXXOOXXOOOXXOXXXOOXOOXXOOX OOXXXOXOOXOOOOXXOXXOXOXOOOOOXOOOXOXOOXXXXOO...
output:
1
result:
ok "1"
Subtask #3:
score: 50
Accepted
Test #13:
score: 50
Accepted
time: 11ms
memory: 3220kb
input:
1000 1000 XXOXOOXOOXOXXXXOOOXXOXOXOXXOXOXOOXOOOOXXOOOXOOOOXOOOOOXXOXXXOXOOXXXOXXXOXOOOXXXXOXOOOOOXXO...
output:
0
result:
ok "0"
Test #14:
score: 0
Accepted
time: 16ms
memory: 3220kb
input:
1000 1000 XXOXXOXOXXXOOOXOOOXOOXXXOOOOXXOXXOXXXOOXOXOOOOXXOXXXXXOOOXOXXXXOOOOOXOXOOOXXOXXXXXXOXOXXXO...
output:
0
result:
ok "0"
Test #15:
score: 0
Accepted
time: 6ms
memory: 3216kb
input:
1000 1000 OXOOXXOXXXXXOXXXXXOXXOXOXXXOXOXOOOXOXOOXOOXOXXOXOXXOOXXOXXOXXOXOOXOOXXOOXXXXXOXOXOXOOOOXOX...
output:
0
result:
ok "0"
Test #16:
score: 0
Accepted
time: 13ms
memory: 3224kb
input:
1000 1000 OOOXOXOOOOXOXXOXXOOOXOXXOXXOOOOOXOOOOXXOOOXOOOXXXOOOXOOOOXXOOXXOOOOXOOOXXOXXOXXOOOXXOXOXXX...
output:
1
result:
ok "1"
Test #17:
score: 0
Accepted
time: 10ms
memory: 3252kb
input:
1000 1000 XXOXXXXXXXXXOXOOXOXOOXXXOOOOOOOOOXOXOOXOXXOOOXXOXOXOOXOOXOXOXOXXXOXOXXXXOOXXXXOXOXOOXXXXOX...
output:
1
result:
ok "1"
Test #18:
score: 0
Accepted
time: 11ms
memory: 3228kb
input:
1000 1000 XXXXXOOOXXOXOOOOXXOOXOOXXOOOXXXXXXXOXXXXXXXOOOXOXOXXXOXXOXXOXXOOOOXOOXOOXOXOOXOOXOOXOXOXXO...
output:
1
result:
ok "1"
Extra Test:
score: 0
Extra Test Passed