QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#276297 | #5071. Check Pattern is Good | rageOfThunder | TL | 6413ms | 4828kb | C++14 | 3.7kb | 2023-12-05 19:29:37 | 2023-12-05 19:29:38 |
Judging History
answer
// 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 = 3e4 + 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 * 3 + 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?
*/
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 4156kb
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: 172ms
memory: 4312kb
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: 4284kb
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: 166ms
memory: 4332kb
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: 168ms
memory: 4324kb
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: 177ms
memory: 4260kb
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: 845ms
memory: 4292kb
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: 837ms
memory: 4212kb
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: 240ms
memory: 4172kb
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: 256ms
memory: 4256kb
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: 6413ms
memory: 4828kb
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: 6167ms
memory: 4692kb
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...