QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#273194#5070. Check Pattern is Badsio_TL 1982ms3956kbC++144.4kb2023-12-02 21:58:352023-12-02 21:58:35

Judging History

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

  • [2023-12-02 21:58:35]
  • 评测
  • 测评结果:TL
  • 用时:1982ms
  • 内存:3956kb
  • [2023-12-02 21:58:35]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast,no-stack-protector,fast-math",3)
int t,n,m,k;
char a[105][105],tmp[105][105];
struct node{int x,y;};
vector<node> v;
char p[2]={'B','W'};
int dx[8]={0,0,1,1,1,-1,-1,-1};
int dy[8]={1,-1,0,1,-1,0,1,-1};
void output()
{
    // if(t==10000) return ;
    cout<<"YES\n";
    for(int i=1;i<=n;i++,cout<<"\n")
        for(int j=1;j<=m;j++) cout<<tmp[i][j];
}
queue<node> q;
char check(int x,int y)
{
    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 '!';
}
bool cmp(node a,node b){return a.x+a.y<b.x+b.y;}
int main()
{
    // freopen("a.in","r",stdin);
    // freopen("a.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    srand(time(0));
    cin>>t;
    for(int l=1;l<=t;l++)
    {
        v.clear();
        cin>>n>>m;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                cin>>a[i][j];
                if(a[i][j]=='?') v.push_back({i,j});
            }
        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=0;i<v.size();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<=3000&&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=0;i<v.size();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=(int)v.size()-1;i>0;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;
            // for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(f==0&&tmp[i][j]=='?')
            // {
            //     f=1;
            //     cout<<n<<" "<<m<<"\n";
            //     for(int i=1;i<=n;i++,cout<<"\n") for(int j=1;j<=m;j++) cout<<a[i][j];
            //     for(int i=1;i<=n;i++,cout<<"\n") for(int j=1;j<=m;j++) cout<<tmp[i][j];
            //     for(int i=0;i<v.size();i++) cout<<'('<<v[i].x<<","<<v[i].y<<")"<<" ";
            //     cout<<"\n";
            //     cout<<check(i,j)<<"\n";
            //     for(int i=1;i<=n;i++,cout<<"\n") for(int j=1;j<=m;j++) cout<<tmp[i][j];
            // }
            if(f==1) continue;
            flag=1;
            output();
            break;
        }
        if(flag==0) cout<<"NO\n";
    }
}
/*
5
2 6
??????
W???B?
2 6
??????
W???B?
2 6
??????
W???B?
5 10
?WW????W??
BW?W???WBW
BW??WB????
???W??????
?W????B???
5 10
?WW????W??
BW?W???WBW
BW??WB????
???W??????
?W????B???
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

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

output:

YES
BW
WW
NO
YES
BWB
WWW
WWB

result:

ok ok (3 test cases)

Test #2:

score: 0
Accepted
time: 1982ms
memory: 3860kb

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
BW
BB
BW
WW
BB
YES
WB
BB
BW
BW
WW
WB
NO
NO
YES
B
W
W
B
B
W
W
W
B
W
YES
BBWW
WWWB
WWWB
BBWW
BWWW
WWWW
WWWW
BWBW
BBBW
WWWW
YES
WBW
WWW
WWB
WBB
WBW
WBW
WWW
WWW
YES
W
B
B
W
YES
WBBB
WWWB
YES
BWWBBB
BBWBWB
YES
WBWBB
YES
BWBBBW
WWBBBB
BBBWWW
WWWWWW
YES
W
YES
BWB
BBB
WBB
WBB
WWB
WBB
BBW
BBW...

result:

ok ok (10000 test cases)

Test #3:

score: 0
Accepted
time: 1901ms
memory: 3720kb

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
B
B
B
W
YES
WBWW
WWWB
WWWW
BWWB
WWWW
BBWB
WWWW
BBWW
BBWB
YES
BW
BB
BB
YES
WWBBWWB
WWWWWWW
NO
NO
YES
WWB
BWW
BBB
BBW
WWW
YES
WWBWWWBWW
BBBWBWWWB
WWBBBWWWW
WWWWBBWBB
BWBWWWWWW
BWBWWWWWB
BWWWWWWWW
YES
WBWWBWW
BBBWWWB
WWBWWWW
BWWWWBB
BBWBWWW
WBWBWBB
WWWWWWB
WWWWBWW
WWWWBWW
YES
WB
BB
B...

result:

ok ok (10000 test cases)

Test #4:

score: 0
Accepted
time: 1920ms
memory: 3708kb

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
WBBBBBW
BBWBBBB
WBBBWWB
WWWBBBB
BBBBBBB
BBWBBBB
BBBBBBB
YES
WBWWBB
WBBWBW
WWWWWW
WWWWWW
WWBBWW
WWWWWW
WBWWBW
WWWBBW
WWWWWW
BWBWWB
YES
BBWBWB
BWWBBB
YES
WWBWBWWW
YES
WB
WW
BW
BB
WW
YES
WBBWW
WWWWW
BBWWB
WWWWB
WWWWW
WWBBB
WWWWB
NO
YES
WWWW
WWBB
WBBB
WBWW
WWWB
BWWW
WWBB
WBBB
WBWW
WBWB
YES
BWBBBB
BB...

result:

ok ok (10000 test cases)

Test #5:

score: 0
Accepted
time: 1896ms
memory: 3944kb

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
WWBBBBWBW
BBBBWBWBW
WWWWWWWWW
WWWBWWWWW
WBWWWBWWW
BBWWWWWWB
YES
BWBBBBW
BWBWWWW
BBBBWBW
YES
WBWWWB
YES
W
W
W
B
B
W
B
NO
NO
YES
WBBWBBB
NO
YES
WBW
BBB
BBB
BBB
BBW
WWW
BBB
NO
YES
BBB
BWB
WWB
WBB
WBW
WBW
WBB
BBW
BBB
BWB
YES
WW
BB
BB
BW
BB
BW
BB
NO
YES
BB
BB
BW
BB
BB
BB
BB
BB
NO
YES
...

result:

ok ok (10000 test cases)

Test #6:

score: 0
Accepted
time: 1974ms
memory: 3680kb

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:

YES
W
B
W
B
W
W
W
W
B
YES
WWWBBBWBWB
YES
BBWBWWBW
WBWWWBBW
BBWWBBBW
BBWBBBBB
WBWBBBBB
YES
WB
WB
WB
WB
WW
WW
YES
WWWBBWBBWB
YES
BWW
WWB
BWB
WWW
NO
YES
WWBBWB
NO
YES
B
B
B
B
B
B
B
W
B
YES
BWWWBWWBW
WWWBBWWWW
WWWWBBBWB
WBWWWWWWW
BBWWWWWWW
WWWWWWBWW
WWWWWWBWW
WWWWBWWWB
YES
WWBW
WWBW
WWWW
WBWB
WWWB
WBWW
...

result:

ok ok (10000 test cases)

Test #7:

score: -100
Time Limit Exceeded

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:

NO
NO
YES
BWWWWWWWWB
BWWBWWWWWW
BWWWWWWWWB
WWBWWWWWWB
BWBWWWWWWW
WWWWBWWWWW
WWBWBBWBBB
BWWWBWWWBB
WWWWWWBWBB
WWWWWBBBBW
NO
YES
WWBBWBWBWB
WWWBBBBBWB
BWBBWWBBBB
BBBBWWBBBW
WBBBBWBBWW
BBWBBBBWWB
BBWBWBBBBB
BWWBWWBWBB
BWBBBBBWWB
WWBWWWBBWB
YES
WBBBBBWWBB
BBBWWBBBBB
WBBWWBBBBB
WWBWWBBBBB
BWBBBBBBBB
BBBB...

result: