QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#520689#5070. Check Pattern is Badhztmax0WA 20ms3856kbC++142.9kb2024-08-15 14:57:522024-08-15 14:57:52

Judging History

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

  • [2024-08-15 14:57:52]
  • 评测
  • 测评结果:WA
  • 用时:20ms
  • 内存:3856kb
  • [2024-08-15 14:57:52]
  • 提交

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)