QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#367731#5070. Check Pattern is Badbear0131TL 66ms3712kbC++143.9kb2024-03-26 12:46:562024-03-26 12:46:58

Judging History

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

  • [2024-03-26 12:46:58]
  • 评测
  • 测评结果:TL
  • 用时:66ms
  • 内存:3712kb
  • [2024-03-26 12:46:56]
  • 提交

answer

#include<bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (n); ++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef vector<int> vi;
typedef pair<int, int> pii;
typedef pair<ll, int> pli;
typedef array<int, 3> ai3;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3fll;
const int Mod = 998244353;
inline int sign(int a){ return (a&1) ? (Mod-1) : 1; }
inline void uadd(int &a, int b){ a += b-Mod; a += (a>>31) & Mod; }
inline void usub(int &a, int b){ a -= b, a += (a>>31) & Mod; }
inline void umul(int &a, int b){ a = (int)(1ll * a * b % Mod); }
inline int add(int a, int b){ a += b-Mod; a += (a>>31) & Mod; return a; }
inline int sub(int a, int b){ a -= b, a += (a>>31) & Mod; return a; }
inline int mul(int a, int b){ a = (int)(1ll * a * b % Mod); return a; }
int qpow(int b, ll p){ int ret = 1; while(p){ if(p&1) umul(ret, b); umul(b, b), p >>= 1; } return ret; }
const int fN = 1010;
int fact[fN], invfact[fN], pw2[fN], invpw2[fN], inv[fN];
void initfact(int n){
	pw2[0] = 1; for(int i = 1; i <= n; ++i) pw2[i] = mul(pw2[i-1], 2);
	invpw2[0] = 1; for(int i = 1; i <= n; ++i) invpw2[i] = mul(invpw2[i-1], (Mod+1) / 2);
	fact[0] = 1; for(int i = 1; i <= n; ++i) fact[i] = mul(fact[i-1], i);
	invfact[n] = qpow(fact[n], Mod-2); for(int i = n; i > 0; --i) invfact[i-1] = mul(invfact[i], i);
	for(int i = 1; i <= n; ++i) inv[i] = mul(invfact[i], fact[i-1]);
}
int binom(int n, int m){ return (m < 0 || m > n) ? 0 : mul(fact[n], mul(invfact[m], invfact[n-m])); }
const double pi = acos(-1);
inline void chmax(int &a, int b){ (b>a) ? (a=b) : 0; }
inline void chmin(int &a, int b){ (b<a) ? (a=b) : 0; }

int n, m;
string s[111];
bool done[111][111];
bool ok = 1;
bool dfs(int x, int y);
bool check(int x, int y){
	if((s[x][y] != '?') + (s[x][y+1] != '?') + (s[x+1][y] != '?') + (s[x+1][y+1] != '?') >= 3){
		if(s[x][y] != s[x][y+1] && s[x][y] == s[x+1][y+1] && s[x+1][y] == s[x][y+1]) return 0;
		//cout << "check " << x << " " << y << "\n";
		if(s[x][y] == s[x+1][y+1]){
			if(s[x+1][y] == '?'){
				if(s[x][y+1] == s[x][y]) return 1;
				else {
					s[x+1][y] = s[x][y];
					return dfs(x+1, y);
				}
			} else {
				if(s[x+1][y] == s[x][y]) return 1;
				else {
					s[x][y+1] = s[x][y];
					return dfs(x, y+1);
				}
			}
		}
		if(s[x][y+1] == s[x+1][y]){
			//cout << " ???\n";
			if(s[x][y] == '?'){
				if(s[x+1][y+1] == s[x+1][y]) return 1;
				else {
					s[x][y] = s[x+1][y];
					return dfs(x, y);
				}
			} else {
				if(s[x][y] == s[x+1][y]) return 1;
				else {
					s[x+1][y+1] = s[x+1][y];
					return dfs(x+1, y+1);
				}
			}
		}
	}
	return 1;
}
bool dfs(int x, int y){
	if(done[x][y]) return 1;
	done[x][y] = 1;
	if(x+1 < n && y+1 < m) if(!check(x, y)) return 0;
	if(x && y+1 < m) if(!check(x-1, y)) return 0;
	if(x+1 < n && y) if(!check(x, y-1)) return 0;
	if(x && y) if(!check(x-1, y-1)) return 0;
	return 1;
}

mt19937 rng(58);
inline int myrand(int l, int r){ return (int)(rng() % (r-l+1)) + l; }
string ans[111];

bool search(int x, int y){
	if(y >= m) ++x, y = 0;
	if(x >= n) return 1;
	auto nxt = [&](){
		if(!(x && y && !(ans[x][y] == ans[x][y-1] || ans[x][y] != ans[x-1][y-1] || ans[x][y-1] != ans[x-1][y]))) if(search(x, y+1)) return 1;
		return 0;
	};
	if(s[x][y] != '?'){
		ans[x][y] = s[x][y];
		return nxt();
	} else {
		ans[x][y] = myrand(0, 1) ? 'W' : 'B';
		if(nxt()) return 1;
		ans[x][y] ^= ('W' ^ 'B');
		if(nxt()) return 1;
		return 0;
	}
}

void solve(){
	cin >> n >> m;
	rep(i, n) cin >> s[i];
	rep(i, n) rep(j, m) done[i][j] = 0;
	ok = 1;
	rep(i, n) rep(j, m) if(s[i][j] != '?' && !done[i][j]) ok &= dfs(i, j);

	//cout << ": \n";
	//rep(i, n) cout << s[i] << "\n";

	if(!ok) cout << "NO\n";
	else {
		cout << "YES\n";
		rep(i, n) ans[i] = s[i];
		search(0, 0);
		rep(i, n) cout << ans[i] << "\n";
	}
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);

	int T;
	cin >> T;
	while(T--) solve();

	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3704kb

input:

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

output:

YES
WB
WW
NO
YES
BWB
WWW
WWW

result:

ok ok (3 test cases)

Test #2:

score: 0
Accepted
time: 17ms
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
WW
BB
BW
WW
BB
YES
BW
BB
BB
BW
WW
WW
NO
NO
YES
B
W
B
B
B
W
W
W
B
W
YES
BBWW
WBWB
WWWB
BBWW
BWWB
WWWW
WBWB
WWWW
BWBW
BWWW
YES
WBW
WBB
WWB
BBB
WWW
WWW
BWW
WWW
YES
W
B
B
B
YES
WBWB
WWWB
YES
BBWBBB
BBWWWB
YES
WWWWB
YES
BWBWBB
WWBWWB
BBBWWW
WWWWWW
YES
B
YES
BWB
BBB
WBW
BBB
WWB
BBB
BBW
WWW...

result:

ok ok (10000 test cases)

Test #3:

score: 0
Accepted
time: 18ms
memory: 3584kb

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
B
W
W
B
W
W
B
W
YES
BWWB
WWBB
WBBB
WWBB
BWWW
BBWW
WWWW
BBWB
WWWB
YES
WW
BB
BB
YES
BWWBWWB
WWWBWWW
NO
NO
YES
WWB
BWW
BBB
BBW
WWW
YES
BWWWWWWBW
WWWBBWWWW
WWBBBBWWW
WWWWBBWBB
WWWWWWWWW
BWWBWWBWB
WWWWWWWWW
YES
WBWWWWB
BBBWWWW
BWBWWWW
BWWWWWB
BBBBWWW
WWWBWBB
WWWWWWB
WWWWWWW
WWWWBWW
YES
WB
WW
B...

result:

ok ok (10000 test cases)

Test #4:

score: 0
Accepted
time: 14ms
memory: 3588kb

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
WBBWBBW
WBWWBBB
WBBBBWB
WWBBWWB
BBBBBBB
BBWBBBB
BBBBBBB
YES
WWWWBB
WBWWWB
WWWWWB
BWWWWW
WWWBWB
WWWBBB
WBWWWW
WWWWWW
WWWWWW
BWBWWW
YES
WBWBWW
BBBBBB
YES
WWBWBBWB
YES
WB
WW
BB
BB
BW
YES
WWWWW
WWWWB
WBBWB
WWWWW
WWWWW
BWWBB
WWWWB
NO
YES
WWWW
WWWB
WBBB
WWWB
BWWW
BWWW
WWBB
WWBW
WWWW
WBWB
YES
BWBBBB
BW...

result:

ok ok (10000 test cases)

Test #5:

score: 0
Accepted
time: 13ms
memory: 3640kb

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
W
YES
WWWBBWWBB
WWBBBBBBW
BBBWWBWBW
WWWWWWWWW
WWWBBBWBW
BBWWBBWWW
BWWWBWWWB
YES
BBBBBBB
BWWWWWW
BWWBBBW
YES
BBBWWB
YES
W
W
W
B
B
W
W
NO
NO
YES
WBBWBBB
NO
YES
WBW
WBB
BBB
WBB
BBW
WWW
BBB
NO
YES
BBB
BWB
WWB
WBB
BBW
BWW
WWB
BBB
BBB
BWB
YES
WW
WB
BB
BW
BB
BW
BB
NO
YES
BB
BB
BW
BB
BB
WB
BB
WB
NO
YES
...

result:

ok ok (10000 test cases)

Test #6:

score: 0
Accepted
time: 18ms
memory: 3600kb

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
B
W
B
YES
WWWBWWBBWB
YES
WWWBWWBW
BBWWWBBW
BBBBBBBB
BBWBBBBB
WBWBBBBB
YES
BB
WW
WB
BB
WW
WW
YES
WWBBBWWBWW
YES
BWB
BWW
BBB
BBW
NO
YES
BWBWBW
NO
YES
B
B
B
W
W
B
B
W
B
YES
BWWWBWWWW
WWWBBBBWW
WWWWWWBBB
WBWWWWWWW
WBWBWWWWW
WWWWWWWWW
BWWWWWBWW
WWWWWWWWB
YES
WBBW
WWWW
WWWW
WBWB
WWWW
WWWB
...

result:

ok ok (10000 test cases)

Test #7:

score: 0
Accepted
time: 47ms
memory: 3600kb

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
WBWWWBWWWW
WWWWWWWWWB
BBWBBWWBWB
WWWBWWWWWB
WWBBWWBWWW
WWWBWWWWBW
BWWBBWWWBB
BBWWWWWWBB
WWWWWWBWBW
WWWWWWBWBW
NO
YES
BWBBWBWWWB
WWWBBBBBWB
BWBBWWBWWB
BBBBWWBWWW
WBWBBWBBWW
BBWBBBBBBB
BBWWWWBWBB
BWWBWWBWBB
WWBBBBBWWW
WBBWWBBBWW
YES
BBWBBBBWBB
BWWWBBBWBB
WWWBBWBBBB
BWBBBBBBBB
BWWBWBBBBB
BBWB...

result:

ok ok (10000 test cases)

Test #8:

score: 0
Accepted
time: 44ms
memory: 3648kb

input:

10000
10 10
?BBBBWBBB?
??W???WB??
BB?W???BB?
?B???BBB??
W??BB?WBBB
?B?B???W?W
?????BB???
?BW???B???
???BBB??BB
BWBBBBBBB?
10 10
BWW?WWB?BW
??B?WBBBWB
B??BB??BWB
BW?BWB???W
?WB?WWW?W?
B??B??W?BB
?WBB?WBB?B
BB??BBWBW?
WB??WBB?BW
?B???B?W??
10 10
??WWWB??BB
?WW???WBWW
???W??W?WW
?W?B?W?W??
WWB?WBB??W
B...

output:

YES
WBBBBWBBBB
WWWBWWWBWB
BBWWWBWBBB
BBBBBBBBBB
WBBBBWWBBB
BBWBBBWWBW
WWWWBBBBBW
BBWBBWBBBB
BWWBBBBWBB
BWBBBBBBBW
NO
YES
WWWWWBBBBB
BWWWWWWBWW
WWWWWBWBWW
WWWBWWWWWB
WWBBWBBWWW
BWWBWBWWWW
WWWWWWWWWW
WWWWBBWWWW
WBBWWBBWBW
WBBWWWWWBB
YES
WWWWWWBWWW
WWWWWWWWBB
WWBWWWWWWB
WWBWWWBWWW
WWWWWWWWWW
WWWWWBWWWW...

result:

ok ok (10000 test cases)

Test #9:

score: 0
Accepted
time: 20ms
memory: 3648kb

input:

10000
1 100
WWW?BWB?BB?BBW?BWBB?W??B?B?BWWBWB?WWB??BBBBB??BBBBB?BBBWBWWW?B?BBBWW??BBBW???B???W??W??BW?B?B?W??WB?
1 100
?WBW?WB?BBBB?BWBWB???WWB?BBB?BBW?B?B??W?B??BBW??WBBW???WW?BBBB?WWB?WBB???WBBB?BBW?W??BW?B??BBBBBBBWB
1 100
W?????BBB?BB?BB?????BWWWB?B???BB??????B??BWW???B??B?B???????BBB??B?BBB???B...

output:

YES
WWWWBWBBBBWBBWWBWBBBWWWBBBWBWWBWBWWWBBWBBBBBBBBBBBBBBBBWBWWWBBBBBBWWBBBBBWBBWBBWBWBBWWWBWBBWBBWBWWBW
YES
BWBWBWBWBBBBWBWBWBBBBWWBBBBBWBBWWBBBWWWWBWBBBWBWWBBWWWWWWBBBBBWWWBBWBBBWWWBBBWBBWBWBWBWBBBWBBBBBBBWB
YES
WWWWWWBBBBBBWBBBBBWWBWWWBWBBWWBBWWWBBWBWWBWWBBWBWBBWBBWWWWBWBBBWWBWBBBBWWBBBBWWWWWBWWW...

result:

ok ok (10000 test cases)

Test #10:

score: 0
Accepted
time: 66ms
memory: 3692kb

input:

10000
100 1
W
B
B
?
B
B
B
?
B
B
B
B
W
B
B
B
?
?
B
?
B
B
?
W
B
W
?
B
?
B
W
W
?
W
?
B
?
B
B
?
W
W
B
?
B
B
?
?
W
W
B
B
?
B
B
?
B
?
?
?
W
B
W
B
?
B
W
?
?
B
B
B
B
?
B
?
W
B
B
W
B
?
W
B
B
?
B
B
?
B
?
W
?
B
?
B
B
?
B
W
100 1
?
W
?
W
?
W
W
W
W
W
B
W
?
?
B
B
?
W
?
B
W
W
W
W
?
?
?
?
W
W
B
W
W
W
W
W
?
W
W
W
?
...

output:

YES
W
B
B
W
B
B
B
B
B
B
B
B
W
B
B
B
W
W
B
B
B
B
W
W
B
W
W
B
B
B
W
W
W
W
W
B
B
B
B
W
W
W
B
B
B
B
B
B
W
W
B
B
B
B
B
B
B
B
B
B
W
B
W
B
B
B
W
W
B
B
B
B
B
W
B
B
W
B
B
W
B
B
W
B
B
B
B
B
W
B
W
W
B
B
W
B
B
B
B
W
YES
B
W
W
W
W
W
W
W
W
W
B
W
B
B
B
B
W
W
W
B
W
W
W
W
B
B
B
B
W
W
B
W
W
W
W
W
W
W
W
W
W
W
B
W
B
B
...

result:

ok ok (10000 test cases)

Test #11:

score: 0
Accepted
time: 34ms
memory: 3712kb

input:

1000
100 10
WWWB?WWW?W
W????????W
WB?W??WW?W
WBB?WWW??B
?WWWW?WW?W
?WWWW?W?WB
?B??W?W???
WW?W?BWWW?
WW?B?W?W?W
????WW??W?
BWB??WWWW?
W??W??WW??
W?WBB??WWW
?WWBBWW?WW
?WBWW?B???
???WWW???W
??WW?WWW??
????W?BW?W
???W?W?W?W
?WW?WW?WB?
BW??WW?WW?
WB?WWWWW?W
??BWW??W?W
W??B?WWWW?
WWW?W??WWW
BBBW??W?W?
??...

output:

NO
NO
NO
NO
NO
NO
NO
YES
WBWWWWWBWW
WBWBWWWWWW
WBWWWWWBWW
WWWWWWWBBB
BBBWBWWWWB
WWWWWWWBWW
WWWWBWWWWW
WBWWWWWBWW
WWWBBWWWWW
BWWWBBWWWB
BWWWBBBBBB
BBWWWWWWWW
BWWWWBBWBW
WWWWWWWWWW
WWWWBWBWWW
WWWBBWWWWB
WWWBWWWWBB
WWWWWWWWBW
WWWBWWWWWW
WWWWWBWWBW
BBBWWWWWWW
WWWWWWWBBB
WWWBWBWWWW
WWWWWWWWWB
WBWWWWWBWW
...

result:

ok ok (1000 test cases)

Test #12:

score: -100
Time Limit Exceeded

input:

1000
10 100
BBWB??W??B?BWB?BBB??WWWW?B???WBB??WW???WWBW?B??W??BW?BWBBBW?BWBW?WBW?B?WWB??B?B?BBWWWBBBBW?BB???B?WB
??????WWWBWBBB??W??WW??BWBW??W??????WWWB?B??B?????W?B?????W??BBBBWBW??BWWWB???WBWB?BB?WW?B????W?WWB?
WB?BBBW?B??BB?WWW?B??WBB??W?BBW??BB??BB???BB??B??WB??W?B?B?WWWWW?BB??W?W?WBB??B?WWBBB?...

output:


result: