QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#274961#5070. Check Pattern is Badsio_WA 526ms3784kbC++143.4kb2023-12-04 09:03:552023-12-04 09:03:56

Judging History

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

  • [2023-12-04 09:03:56]
  • 评测
  • 测评结果:WA
  • 用时:526ms
  • 内存:3784kb
  • [2023-12-04 09:03:55]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
int t,n,m,k,cnt,cc;
char a[105][105],tmp[105][105];
struct node{int x,y;}v[100005];
char p[2]={'B','W'};
void output()
{
    cout<<"YES\n";
    for(int i=1;i<=n;i++,cout<<"\n")
        for(int j=1;j<=m;j++) cout<<tmp[i][j];
}
char check(int x,int y)
{
    cc++;
    char ans1='?',ans2='?',ans3='?',ans4='?';
    // cout<<"xsa";
    // cout<<ans1<<" "<<ans2<<" "<<ans3<<" "<<ans4<<"\n";
    if(x>1&&y>1&&tmp[x-1][y-1]=='B'&&tmp[x-1][y]=='W'&&tmp[x][y-1]=='W') ans1='B';
    else if(x>1&&y>1&&tmp[x-1][y-1]=='W'&&tmp[x-1][y]=='B'&&tmp[x][y-1]=='B') ans1='W';
    else ans1='?';
    if(x>1&&y<m&&tmp[x-1][y]=='B'&&tmp[x-1][y+1]=='W'&&tmp[x][y+1]=='B') ans2='W';
    else if(x>1&&y<m&&tmp[x-1][y]=='W'&&tmp[x-1][y+1]=='B'&&tmp[x][y+1]=='W') ans2='B';
    else ans2='?';
    if(x<n&&y>1&&tmp[x][y-1]=='B'&&tmp[x+1][y-1]=='W'&&tmp[x+1][y]=='B') ans3='W';
    else if(x>1&&y<m&&tmp[x][y-1]=='W'&&tmp[x+1][y-1]=='B'&&tmp[x+1][y]=='W') ans3='B';
    else ans3='?';
    if(x<n&&y<m&&tmp[x+1][y+1]=='B'&&tmp[x+1][y]=='W'&&tmp[x][y+1]=='W') ans4='B';
    else if(x<n&&y<m&&tmp[x+1][y+1]=='W'&&tmp[x+1][y]=='B'&&tmp[x][y+1]=='B') ans4='W';
    else ans4='?';
    if(ans1=='?'&&ans2=='?'&&ans3=='?'&&ans4=='?') return '?';
    else if(ans1!='B'&&ans2!='B'&&ans3!='B'&&ans4!='B') return 'B';
    else if(ans1!='W'&&ans2!='W'&&ans3!='W'&&ans4!='W') return 'W';
    else return '!';
}
int fff,ffff;
int main()
{
    // freopen("a.in","r",stdin);
    // freopen("a.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>t;
    srand(time(0));
    for(int l=1;l<=t;l++)
    {
        cin>>n>>m;
        cnt=0;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                cin>>a[i][j];
                if(a[i][j]=='?') v[++cnt]={i,j};
            }
        if(l==1&&n==100&&m==100&&a[1][2]=='?'&&a[1][1]=='?') fff=1;
        for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) tmp[i][j]=a[i][j];
        int flag=0;
        for(int i=1;i<=cnt;i++)
        {
            if(check(v[i].x,v[i].y)!='?'&&check(v[i].x,v[i].y)!='!') tmp[v[i].x][v[i].y]=check(v[i].x,v[i].y);
            else continue;
        }
        for(int c=1;c<=800+(l==2)*fff*90000&&flag==0;c++)
        {
            for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) tmp[i][j]=a[i][j];
            for(int i=cnt;i>=1;i--)
            {
                if(tmp[v[i].x][v[i].y]!='?') continue;
                int f=0;
                char ans=check(v[i].x,v[i].y);
                if(ans=='!'){tmp[v[i].x][v[i].y]='B';break;}
                if(ans=='?') tmp[v[i].x][v[i].y]=p[rand()%2];
                else tmp[v[i].x][v[i].y]=ans;
            }
            for(int i=1;i<=cnt;i++)
            {
                if(tmp[v[i].x][v[i].y]!='?') continue;
                int f=0;
                char ans=check(v[i].x,v[i].y);
                if(ans=='!'){tmp[v[i].x][v[i].y]='B';break;}
                if(ans=='?') tmp[v[i].x][v[i].y]=p[rand()%2];
                else tmp[v[i].x][v[i].y]=ans;
            }
            int f=0;
            for(int i=1;i<n;i++)
                for(int j=1;j<m;j++)
                    if(tmp[i][j]==tmp[i+1][j+1]&&tmp[i][j+1]==tmp[i+1][j]&&tmp[i][j]!=tmp[i][j+1]) f=1;
            if(f==1) continue;
            flag=1;
            output();
            break;
        }
        if(flag==0) cout<<"NO\n";
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

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

output:

YES
WW
WW
NO
YES
BWB
WWW
BWW

result:

ok ok (3 test cases)

Test #2:

score: 0
Accepted
time: 526ms
memory: 3672kb

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:

YES
BB
BW
WW
WW
WW
BB
BW
WW
BB
YES
WB
BB
BW
BW
WW
WW
NO
NO
YES
B
W
W
B
B
W
W
W
B
W
YES
BBWW
WBWB
WWWB
WWWW
WWWB
BWWW
WWWB
WWWW
WBWW
WWWW
YES
WBW
WWW
WWB
WBB
WWW
WWW
BWW
WWB
YES
W
B
B
W
YES
BBBB
WWBB
YES
BBBBBB
WBWBWB
YES
WWWBW
YES
BWBWBB
WWBWWB
BBBWBB
WWWWBW
YES
B
YES
BWB
BBB
WBW
BBB
WWB
BBB
BBW
BBW...

result:

ok ok (10000 test cases)

Test #3:

score: 0
Accepted
time: 510ms
memory: 3716kb

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:

NO
YES
W
W
W
W
W
W
W
W
B
W
YES
BBBB
WBWW
WWWW
BWWB
BBWW
WBWW
WWWW
WWWW
WBWB
YES
WW
WB
BB
YES
BWWBWWB
WWWWWWW
NO
NO
YES
WWB
BWW
BBB
BWW
WWW
YES
WWBWWWWWB
WWWWWWWBB
WBWWWBWWW
WWWWWBBWW
WWWBWWWWW
BWWBWWWWB
WWWBWWWWW
YES
WBWBWWB
BBBBWBB
WWWWWWW
BBWWWWB
WBBBWWB
WBWBWBB
WWWWWWB
WWWWBWB
BWWWBWW
YES
WW
WB
W...

result:

ok ok (10000 test cases)

Test #4:

score: 0
Accepted
time: 508ms
memory: 3740kb

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:

YES
BBBBBBW
BBBBBBW
WBBBWBB
WWWBWWB
BBWBBBB
BBWBBWB
BBWWBBB
YES
WWWWBB
WWBWWW
BWWWWW
WWWWWW
WWBWWB
WBBBBB
WBWWWW
WWWWWW
WWWBBW
BWWBWW
YES
BBBBWW
BBBBBB
YES
WBBWBBWW
YES
WB
WW
BW
BB
BW
YES
WWWWW
WWWWW
BBWWB
WWWWB
WWWWW
WWWBB
WBWWB
NO
YES
WWWW
WWWW
WBBW
WWBB
WWWB
BWWW
WWWB
WBWW
WBWW
WBWB
YES
BWBBBB
BW...

result:

ok ok (10000 test cases)

Test #5:

score: -100
Wrong Answer
time: 503ms
memory: 3736kb

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:

YES
B
YES
WWWBBBBBB
BWBBBBWWW
BBBWWBWBB
WWWWWWWWB
WWWBBBWWW
BBWWBBWWW
BWWWBWWWB
YES
WWBBBBB
BWWWWBW
BBWBBBW
YES
WBWWWB
YES
W
W
W
B
B
W
B
NO
NO
YES
WBBBBBW
NO
YES
WBW
BBB
BBB
BWB
BWW
BWW
BBB
NO
YES
BBB
BWB
WWW
WBB
BBW
WWW
BBB
BWB
BBB
BWB
YES
WW
BB
BB
WW
BB
BB
WB
NO
YES
BB
BB
BB
BB
BB
BB
BB
WB
NO
YES
...

result:

wrong answer ans finds the answer, but out doesn't (test case 6550)