QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#276302 | #5071. Check Pattern is Good | rageOfThunder | TL | 6165ms | 5304kb | C++14 | 3.8kb | 2023-12-05 19:34:07 | 2023-12-05 19:34:08 |
Judging History
answer
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops")
// MagicDark
#include <bits/stdc++.h>
#define debug cerr << "[" << __LINE__ << "] "
#define SZ(x) (int) x.size() - 1
#define all(x) x.begin(), x.end()
#define ms(x, y) memset(x, y, sizeof x)
#define F(i, x, y) for (int i = (x); i <= (y); i++)
#define DF(i, x, y) for (int i = (x); i >= (y); i--)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
template <typename T> inline void chkmax(T &x, T y) {x = max(x, y);}
template <typename T> inline void chkmin(T &x, T y) {x = min(x, y);}
template <typename T> inline void read(T &x) {
x = 0; int f = 1; char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
x *= f;
}
const int NN = 110;
int n, m;
char ch[NN][NN];
const int N = 4e4 + 10;
struct edge {
int to, flow;
unsigned pos;
};
vector <edge> a[N];
void add(int x, int y, int flow) {
a[x].push_back((edge) { y, flow, (unsigned) a[y].size() });
a[y].push_back((edge) { x, 0, (unsigned) a[x].size() - 1 });
}
int dep[N];
unsigned cur[N];
queue <int> q;
bool bfs(int s, int t) {
F(i, s, t) dep[i] = 0;
dep[s] = 1;
q.push(s);
while (q.size()) {
int x = q.front(); q.pop();
for (edge i: a[x])
if (i.flow && !dep[i.to]) {
dep[i.to] = dep[x] + 1;
q.push(i.to);
}
}
return dep[t];
}
int dfs(int x, int tt, int lim) {
if (x == tt) return lim;
int ans = 0, t;
for (unsigned &i = cur[x]; i < a[x].size(); ++i)
if (a[x][i].flow && dep[a[x][i].to] == dep[x] + 1 && (t = dfs(a[x][i].to, tt, min(lim, a[x][i].flow)))) {
a[x][i].flow -= t, a[a[x][i].to][a[x][i].pos].flow += t;
lim -= t, ans += t;
if (!lim) return ans;
}
return ans;
}
ll dinic(int s, int t) {
ll ans = 0;
while (bfs(s, t)) {
F(i, s, t) cur[i] = 0;
ans += dfs(s, t, 1e9);
} return ans;
}
ll ans;
int id(int x, int y) {
return (x - 1) * m + y;
}
void zhk() {
cin >> n >> m;
int s = 0, t = n * m * 4 + 1;
F(i, s, t) a[i].clear();
ans = 0;
F(i, 1, n)
F(j, 1, m) {
cin >> ch[i][j];
if ((i + j) & 1) {
if (ch[i][j] == 'W') ch[i][j] = 'B';
else if (ch[i][j] == 'B') ch[i][j] = 'W';
}
// if (ch[i][j] == 'W') {
// add(s, id(i, j), 1e9);
// }
// if (ch[i][j] == 'B') {
// add(id(i, j), t, 1e9);
// }
if (ch[i][j] == '?') {
add(s, id(i, j), 1e9);
add(id(i, j), t, 1e9);
ans += 1e9;
}
}
F(i, 1, n - 1)
F(j, 1, m - 1) {
if (ch[i][j] != 'B' && ch[i + 1][j] != 'B' && ch[i][j + 1] != 'B' && ch[i + 1][j + 1] != 'B') {
ans++;
add(s, n * m + id(i, j), 1);
add(n * m + id(i, j), id(i, j), 1e9);
add(n * m + id(i, j), id(i, j + 1), 1e9);
add(n * m + id(i, j), id(i + 1, j), 1e9);
add(n * m + id(i, j), id(i + 1, j + 1), 1e9);
}
if (ch[i][j] != 'W' && ch[i + 1][j] != 'W' && ch[i][j + 1] != 'W' && ch[i + 1][j + 1] != 'W') {
ans++;
add(id(i, j), n * m * 2 + id(i, j), 1e9);
add(id(i, j + 1), n * m * 2 + id(i, j), 1e9);
add(id(i + 1, j), n * m * 2 + id(i, j), 1e9);
add(id(i + 1, j + 1), n * m * 2 + id(i, j), 1e9);
add(n * m * 2 + id(i, j), t, 1);
}
}
cout << ans - dinic(s, t) << '\n';
F(i, 1, n) {
F(j, 1, m) {
char ch;
if (::ch[i][j] == '?') {
if (dep[id(i, j)]) ch = 'W';
else ch = 'B';
} else ch = ::ch[i][j];
if ((i + j) & 1) {
if (ch == 'W') ch = 'B';
else ch = 'W';
}
cout << ch;
}
cout << '\n';
}
}
signed main() {
cin.tie(0) -> sync_with_stdio(0);
int _ = 1;
cin >> _;
while (_--) zhk();
return 0;
}
/* why?
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 4568kb
input:
3 2 2 ?? ?? 3 3 BW? W?B ?BW 3 3 BW? W?W ?W?
output:
1 BW WB 1 BWB WBB BBW 4 BWB WBW BWB
result:
ok ok (3 test cases)
Test #2:
score: 0
Accepted
time: 173ms
memory: 4664kb
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:
3 BB BW WW WW BW WB BW WB BB 2 BW WB BW BW WW WB 9 WBBBWWB WBWBWWW BWBBWWB WBWWBWW BBWBBWB WWBBWWW BWBWBWB WWWWBBW BBWBBWW BBWBWBB 6 BWWBWWB WBBWWWB BWWBBBW BBBWBBB 0 B W B B B W W W B W 15 BWWW WBWB WWWB WBBW BWWB BWBW WBWB BWBW WBWW BWBW 8 WBW WWB WBW BWB WBW WBW BWB WWW 0 W B B W 1 BBWB WWBB 3 BW...
result:
ok ok (10000 test cases)
Test #3:
score: 0
Accepted
time: 168ms
memory: 4664kb
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:
21 BBWWBW WWBBWB BWBWBW BBWBWB WWBWWB BBWBBW BWBWWB WBBWBW BWWBBW 0 W W B W B W B W B W 15 WBWB BWBW WBWB BWBB WBWW WBWB WWBW WBWB BWWW 1 BW WB BB 4 BWBBWWB WBWWBBW 20 WBWBWWWWW BWBWBBWWW WBWBBWBWW WWBWWBWWW WBBWBWBWW BWBBWWWWW WBWBWBWWW WWWWBWWWW BWWWWWWWB 28 WWBBWWWWWB WBWBWBWBBW BWBWBWBWBW WBWWBW...
result:
ok ok (10000 test cases)
Test #4:
score: 0
Accepted
time: 170ms
memory: 4864kb
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:
15 WBWBBBW BWBWBBW WBBBBWB WWWBWBW BBBWBBB BBWBWWB BWBWBBW 13 WWWWWB WBWWBW BWWWWB WWWBWW WWBWWW WBWBWB WBWWBW WWBBWW WWWWBW WWWBWB 4 WBWBWW BWBWBB 0 BWBWBWWW 1 WB WB BW BB BW 12 WBBWB BWWBW WBBWB WWWWB WBWBW BWBBW WBWWB 7 BBWBW BWBWW WWWBB WBBWB BWBWW BBWBB BWWWB BBWBB 9 WWWW WBWB WWBW WBWB BWWB BW...
result:
ok ok (10000 test cases)
Test #5:
score: 0
Accepted
time: 171ms
memory: 4536kb
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:
0 B 18 WBWBWWBWB BWBWBBWBW BBBBWBWBW WWWWBWWWB WWBBWBWBW WBWWWBWWW BWWWBWBWB 5 WBBBBBW BWBWWWB BBWBBBW 0 BBBWWB 0 W W W B B W B 23 WWBBWWBW WWWWBBWB BBWBWWWW WWBWBWBW BBWBWBWB BWBWBWWB BWBWWBWB BBWBBWBW 19 WWWBWBBW WBWWBWBW WWBWBWBW WWWWBWWB WBWBWBBW BWBBWBWB WBWWBWWB WWBWWBWW WBWBWWWW WWWWBBWB 0 WB...
result:
ok ok (10000 test cases)
Test #6:
score: 0
Accepted
time: 174ms
memory: 4660kb
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:
0 W B B B W W B W B 0 WWBWBWBBWB 10 BWWWBWBW WBWWWBWW BWBWBWBW BBWBBBBB WBBWBBBW 2 WB BW WB WB WW WB 0 WWBWBWBBWW 6 BWB WBW BWB WBW 26 WWBBBWWBWB WWWBWBBWBW BWWBWWWBWW WBWBWBBBBB BWBBBBWBBW WWWBWWBWBB WWBBBWWBBB BBWBWBWBBW BWBWBWBWBW WBBWWBWBWB 0 BWBWBW 4 WBBWW BWWWW WWWWB WWWBW WWBBW WBWWB 0 B B B ...
result:
ok ok (10000 test cases)
Test #7:
score: 0
Accepted
time: 831ms
memory: 4640kb
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:
20 BWBWWBWWBW WBWBWWBBWW BBBWWWWWWW WWBBWWWWWW WBWWBWWWBW BWWWWWWWBW WBBWWWBBWB WBWWWBWWBW WWWWBWWBWB WWWBWWBWWB 24 WBBWBBWWWB BWWWWBWBBW WBBBWWBBWB WBWBWBWWBW BWWBBWBWWB WWBWBBWWWB BBWBBWBWBW WWBWWWWBWB BWBWWWWBWW WWWWWWBWWB 33 WBWWBWBWWW BWWBWBWBWB WBWWBWWBWW WWBBWWBWWB BWBBWWBWWB WWWWBWWWBW BWBBW...
result:
ok ok (10000 test cases)
Test #8:
score: 0
Accepted
time: 840ms
memory: 4540kb
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:
34 WBBBBWBBBW BWWBWBWBWB BBBWBWBBBW WBWBWBBBWB WWBBBWWBBB WBWBWBBWBW BWBWBBBBWB WBWBWWBWBW BWBBBBWBBB BWBBBBBBBB 31 BWWBWWBWBW WBBWWBBBWB BWWBBWWBWB BWWBWBBWBW BWBWWWWBWB BBWBWBWWBB BWBBBWBBWB BBWWBBWBWB WBWBWBBWBW WBBWBBWWWB 33 WBWWWBBWBB BWWBBWWBWW WBBWWBWBWW BWWBBWBWBB WWBWWBBBWW BBWBWBWWWW BWBWB...
result:
ok ok (10000 test cases)
Test #9:
score: 0
Accepted
time: 231ms
memory: 4588kb
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:
0 WWWWBWBWBBBBBWBBWBBWWWBBBBBBWWBWBWWWBWBBBBBBBWBBBBBWBBBWBWWWBBBBBBWWBWBBBWBWBBBWBWBWWWBBWWBWBWWWBWBW 0 BWBWBWBWBBBBBBWBWBBWBWWBBBBBBBBWBBBBBWWWBWBBBWBWWBBWBWBWWWBBBBBWWBBWBBBWBWBBBWBBWWWWBBWWBWBBBBBBBBWB 0 WWBWBWBBBWBBBBBWBWBWBWWWBWBWBWBBBWBWBWBWBBWWBWBBBWBWBWBWBWBWBBBWBBBBBBBWBBBWBWBWWWBWBWWWBBBW...
result:
ok ok (10000 test cases)
Test #10:
score: 0
Accepted
time: 251ms
memory: 4460kb
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:
0 W B B W B B B W B B B B W B B B B W B W B B B W B W B B B B W W B W B B B B B W W W B W B B B W W W B B B B B W B W B W W B W B B B W W B B B B B W B W W B B W B W W B B W B B B B B W B B B B B W B W 0 B W B W B W W W W W B W B W B B B W B B W W W W B W B W W W B W W W W W B W W W B W B W B B W B ...
result:
ok ok (10000 test cases)
Test #11:
score: 0
Accepted
time: 6144ms
memory: 5096kb
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:
335 WWWBBWWWBW WBWBWBWBWW WBBWBWWWBW WBBBWWWBWB BWWWWWWWBW BWWWWBWBWB WBWBWWWWBW WWBWBBWWWB WWBBWWBWBW WBWBWWWBWB BWBWBWWWWB WBWWWBWWBW WBWBBWBWWW BWWBBWWBWW BWBWWBBWBW WBWWWWWBWW BWWWBWWWBW WBWBWBBWWW BWBWBWBWBW WWWBWWWWBW BWBWWWBWWB WBWWWWWWBW BWBWWBBWBW WBWBBWWWWB WWWBWWBWWW BBBWBBWBWB WBWBWWBWBW...
result:
ok ok (1000 test cases)
Test #12:
score: 0
Accepted
time: 6165ms
memory: 5304kb
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:
330 BBWBWBWWBBBBWBWBBBWBWWWWBBBWBWBBWBWWBWBWWBWWBWBWBWBWWBWBBBWWBWBWBWBWWBWWWBWWBWBWBBWWWBBBBWWBBWBWBBWB BWBWBWWWWBWBBBBWWWBWWBWBWBWBWWBWBWBBWWWBWBWWBBWBWBWBBWBWBWWBWBBBBWBWBWBWWWBBWBWBWBWBBBWWWBBWWBWBWWBW WBWBBBWWBWBBBWWWWBBWBWBBBWWWBBWBWBBBWBBWBWBBWWBWBWBWBWBBWBBWWWWWBBBBWWBWBWBBBWBWWWBBBWBWWBWBWW...
result:
ok ok (1000 test cases)
Test #13:
score: -100
Time Limit Exceeded
input:
100 100 100 ?WW?WW??WWW??BBW??WW??W???W?W?W?????W?W?BWBW??WBW????W??BB??BW?W??W????WBW?????WWB??BWW????W??W??WW? B?????WW???B?BWWWB?WWW?WB?BB??????W??W?BWWW?BB??WWBWB?WWW????WW?W??BB?BBWB?W????W???BWWW??BBWWW???BW W?BW??????WBB?B????W?BBW????BBW????W?W?????B?B??WW??????WWWWW?W??WW?WBW??W??W????BWWB?...
output:
4352 BWWWWWBBWWWWBBBWBWWWBBWBWBWWWBWWBWBWWBWWBWBWBWWBWBWBWWBWBBWBBWBWBWWWWBWWBWWBWBWWWBWBBWWBWBWWBWWWBWWB BBWBWBWWBWBBWBWWWBWWWWBWBWBBWWBBWBWBWWBBWWWBBBWBWWBWBBWWWWBWBWWBWBWBBWBBWBBWBWBWWWBWBWWWBWBBWWWBWBBW WWBWBWBWWBWBBWBWBWBWBBBWWBWWBBWWBWBWBWWBWBWBWBBWWWBWBWBWWWWWWBWWBWWBWBWWBWWBWBWBWBWWBWWBBBWWW...