QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#273182#5070. Check Pattern is Badsio_WA 705ms3852kbC++144.3kb2023-12-02 21:53:212023-12-02 21:53:21

Judging History

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

  • [2023-12-02 21:53:21]
  • 评测
  • 测评结果:WA
  • 用时:705ms
  • 内存:3852kb
  • [2023-12-02 21:53:21]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
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<=1000&&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=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;
            }
            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: 3852kb

input:

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

output:

YES
WB
BB
NO
YES
BWB
WWW
WWW

result:

ok ok (3 test cases)

Test #2:

score: 0
Accepted
time: 705ms
memory: 3636kb

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
BB
WB
BB
YES
BB
WB
BB
BW
WW
WB
NO
NO
YES
B
W
B
B
B
W
W
W
B
W
YES
WBWW
WBWB
WWWB
BWWW
BWBW
WWWW
WBWW
WWWW
WBBW
WBBW
YES
WBW
WBB
WBB
BBB
WWW
WBW
BBB
BWW
YES
W
B
B
B
YES
WBBB
WWBB
YES
BWBBBB
WWWBWB
YES
WBWBW
YES
BWBBBW
WWBWBB
BBBWWW
WBWWWW
YES
W
YES
BWB
BBB
WBW
WBB
WWB
WBB
BBW
WBW...

result:

ok ok (10000 test cases)

Test #3:

score: 0
Accepted
time: 678ms
memory: 3684kb

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
BBBW
WBWW
WWWW
BWBB
WWWW
BBWB
WWWW
WWWW
BBWW
YES
BW
BB
BB
YES
BWWBWWB
BWWWWWW
NO
NO
YES
WWB
BWB
BBB
BWW
WWB
YES
BWWWWWBBW
BWBWBWBWW
WWWWBBBWW
WWWWWWWWW
WWBWBWWBW
WWBWWWWWW
WWWWBWWWB
YES
WBWBWWB
BBBBWBB
BWWWWWW
BWWWWBW
BBWBWWW
WWWBWBB
WWWBWWB
WWWWWWW
WWWWBWW
YES
WB
BB
B...

result:

ok ok (10000 test cases)

Test #4:

score: -100
Wrong Answer
time: 684ms
memory: 3716kb

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
BBBWBBW
WWBBBBW
WBBBBBB
WWWBWWB
WBBBBBB
BBWBWBB
BBBBBBB
YES
WWWWWB
WWBWWW
BWWWWW
WWWWWW
WWWWWB
WWWBWB
WWWWWW
WWBBWW
WWWWWW
WWBWWW
YES
BBWBWW
BBWBBB
YES
WWBWBBWW
YES
WB
WW
BW
BB
WW
YES
WBWWW
WWWBB
WBWWW
WWWWB
WBWWW
WWWBB
WWWWB
NO
YES
WWWW
WBBW
WBBB
WWWB
BWWW
BWBW
WWBB
WBBW
WBWW
WBWB
YES
BBWBBB
BB...

result:

wrong answer Token parameter [name=yesno] equals to "9", doesn't correspond to pattern "YES|NO" (test case 1143)