QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#273202 | #5070. Check Pattern is Bad | sio_ | WA | 241ms | 3676kb | C++14 | 4.4kb | 2023-12-02 22:01:25 | 2023-12-02 22:01:26 |
Judging History
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;
}
random_shuffle(v.begin(),v.end());
for(int c=1;c<=300&&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???
*/
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3676kb
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: 241ms
memory: 3652kb
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 BB WB BB YES BW BB BW BW WW WW NO NO YES B W W B B W W W B B YES BBWW WWWB WWWB WBWW WWWW BWBW WWWW BWBW BBBW WBBW YES WBW WWW BWW WWB WWW WWW WWW BWW YES W B W B YES BBBB WWBB YES BBBBBB WBWWWB YES WWWBB YES BWBWWB WWBBBB BBBWBW WWWWBW YES B YES BWB BBB WBW BBB WWB BBB BWW WWB...
result:
ok ok (10000 test cases)
Test #3:
score: -100
Wrong Answer
time: 232ms
memory: 3648kb
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 B W W B W B W YES BBWW WWWB WBWW WWWB BBWW WBWW WWWW WWWW WWWW YES BW BB BB YES WWWBWWB BBWBBWW NO NO YES WWB BWB BBB BBW WWW YES WWWWWWWBB WBBBBWBBW WBWBBBBBW WWWWWWWWW BWWWBWWWW BWBWWWBWW WWBWBBBWB YES WBWBBWB WBBBWWW WWWWWWW BBWWWBB WBWBWWB WWWBWBB WWWWWWW WWWWBWB BWWBBWW YES WW BB W...
result:
wrong answer ans finds the answer, but out doesn't (test case 4429)