QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#520689 | #5070. Check Pattern is Bad | hztmax0 | WA | 20ms | 3856kb | C++14 | 2.9kb | 2024-08-15 14:57:52 | 2024-08-15 14:57:52 |
Judging History
answer
#include <iostream>
#include <queue>
#include <cassert>
using namespace std;
const int N = 105;
int n, m;
char a[N][N];
queue<pair<pair<int, int>, char>> q;
int Count (int x, int y) {
if (!x || !y) return 0;
return ((a[x][y] == 'B') + (a[x][y + 1] == 'W') + (a[x + 1][y] == 'W') + (a[x + 1][y + 1] == 'B')) % 3 == 0 &&
(a[x][y] == '?') + (a[x][y + 1] == '?') + (a[x + 1][y] == '?') + (a[x + 1][y + 1] == '?') == 1;
}
void Add_limit (int x, int y) {
char ch = ((a[x][y] == 'B') + (a[x][y + 1] == 'B') + (a[x + 1][y] == 'B') + (a[x + 1][y + 1] == 'B') == 2 ? 'B' : 'W');
pair<int, int> pos;
if (a[x][y] == '?') pos = {x, y};
if (a[x][y + 1] == '?') pos = {x, y + 1};
if (a[x + 1][y] == '?') pos = {x + 1, y};
if (a[x + 1][y + 1] == '?') pos = {x + 1, y + 1};
q.push({pos, ch});
}
int main () {
cin.tie(0)->sync_with_stdio(0);
int T;
cin >> T;
while (T--) {
[&]() -> void {
cin >> n >> m;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
cin >> a[i][j];
}
}
for (int i = 1; i < n; ++i) {
for (int j = 1; j < m; ++j) {
if (Count(i, j)) {
Add_limit(i, j);
}
}
}
for (int t = 1; t <= n * m; ) {
if (q.empty()) {
while (t <= n * m) {
int x = (t - 1) / m + 1, y = (t - 1) % m + 1;
if (a[x][y] == '?') {
char ret = '?';
for (int o = 0; o < 2; ++o) {
char ch = !o ? 'W' : 'B';
a[x][y] = ch;
if (Count(x - 1, y - 1) + Count(x - 1, y) + Count(x, y - 1) + Count(x, y) <= 1) {
ret = ch;
}
}
assert(ret != '?');
q.push({{x, y}, ret});
++t;
break;
}
++t;
}
if (q.empty()) break;
}
pair<pair<int, int>, char> tp = q.front();
q.pop();
int x = tp.first.first, y = tp.first.second;
char c = tp.second;
a[x][y] = c;
if (Count(x - 1, y - 1)) Add_limit(x - 1, y - 1);
if (Count(x - 1, y)) Add_limit(x - 1, y);
if (Count(x, y - 1)) Add_limit(x, y - 1);
if (Count(x, y)) Add_limit(x, y);
}
for (int i = 1; i < n; ++i) {
for (int j = 1; j < m; ++j) {
if (a[i][j] == 'B' && a[i][j + 1] == 'W' && a[i + 1][j] == 'W' && a[i + 1][j + 1] == 'B' ||
a[i][j] == 'W' && a[i][j + 1] == 'B' && a[i + 1][j] == 'B' && a[i + 1][j + 1] == 'W') {
cout << "NO" << '\n';
return;
}
}
}
cout << "YES" << '\n';
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
cout << a[i][j];
}
cout << '\n';
}
}();
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3592kb
input:
3 2 2 ?? ?? 3 3 BW? W?B ?BW 3 3 BW? W?W ?W?
output:
YES BB BB NO YES BWB WWW BWB
result:
ok ok (3 test cases)
Test #2:
score: 0
Accepted
time: 20ms
memory: 3596kb
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 BB BB BB BW WW BB NO NO YES B W B B B W W W B B YES BBWW WBWB WWWB BBWW BWWB BWWW WWWB BWWW BBBW BBBW YES WBW WBB BBB BBB WBW WBW BBB BWB YES W B B B YES BBBB WBBB YES BBBBBB BBWBWB YES WBWBB YES BWBBBB WWBBBB BBBWBB WBWWBW YES B YES BWB BBB WBB BBB WWB BBB BBW BBB...
result:
ok ok (10000 test cases)
Test #3:
score: 0
Accepted
time: 19ms
memory: 3544kb
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 B B B B B B B B W YES BBBB BBBB WBBB WWBB BWWW BBWB WWWW BBWB BBWB YES BW BB BB YES BWBBWWB BWWBBWW NO NO YES WWB BWB BBB BBW WWW YES BWBWWWBBB BBBBBWBBB WBBBBBBBW WWWWBBBBB BWBBBWBBW BWBBWWBWW BWBBBBBWB YES WBWBBWB BBBBWWB BWBWWWW BWWWWBB BBBBWWB WBBBWBB WWWBWWB WWWWWWB BWWBBWW YES WB BB B...
result:
ok ok (10000 test cases)
Test #4:
score: 0
Accepted
time: 19ms
memory: 3856kb
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 BBBBBBB WBBBBBB WWBBBBB BBBBBBB BBWBBBB BBBBBBB YES WBWWBB WBBWBB WWWWWB BWWBWW WWBBWB WBBBBB WBWWBB WWWBBW WWWBBW BWBBWW YES BBBBWB BBBBBB YES BBBWBBWB YES WB WB BB BB BW YES WBBBB WWWBB BBWWB WWWWB WWWWW BWBBB WWWWB NO YES WWWW BBBB WBBB WBBB WWWB BWWW WWBB WBBB WBWW BBWB YES BBBBBB BB...
result:
ok ok (10000 test cases)
Test #5:
score: -100
Wrong Answer
time: 14ms
memory: 3660kb
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 BWBBBBBBW BBBBWBWBB WWWBWWWWB WWWBBBWWW BBWWBBWWW BBWWBWWWB YES BBBBBBB BWBWWBB BBBBBBW YES BBBWWB YES W W W B B W B NO NO YES WBBBBBB NO YES WBB BBB BBB BBB BBB BBB BBB NO YES BBB BWB WWB BBB BBW BBW BBB BBB BBB BWB YES WW BB BB BW BB BB BB NO YES BB BB BB BB BB BB BB BB NO YES ...
result:
wrong answer ans finds the answer, but out doesn't (test case 1582)