QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#290990 | #5071. Check Pattern is Good | MoRanSky | WA | 153ms | 6604kb | C++20 | 5.2kb | 2023-12-26 01:00:26 | 2023-12-26 01:00:27 |
Judging History
answer
// Skyqwq
#include <bits/stdc++.h>
using namespace std;
const int S = 105, N = S * S, M = N * 2 + N * 9, INF = 1e9;
int n, m;
char s[S][S];
typedef long long LL;
namespace MF{
int n, m, s, t, pre[N], cur[N], q[N];
LL res, maxflow, d[N];
int head[N], numE = 1;
struct E{
int next, v, w;
} e[M << 1];
void inline add(int u, int v, int w) {
e[++numE] = (E) { head[u], v, w };
head[u] = numE;
}
void inline init(int v, int a, int b) {
for (int i = 1; i <= n; i++) head[i] = 0;
numE = 1;
n = v, s = a, t = b;
}
bool inline bfs() {
int hh = 0, tt = -1;
for (int i = 1; i <= n; i++) d[i] = 0;
q[++tt] = s, d[s] = 1, cur[s] = head[s];
while (hh <= tt) {
int u = q[hh++];
for (int i = head[u]; i; i = e[i].next) {
int v = e[i].v;
if (!d[v] && e[i].w) {
cur[v] = head[v];
q[++tt]= v, d[v] = d[u] + 1;
if (v == t) return 1;
}
}
}
return 0;
}
LL dinic(int u, LL flow) {
if (u == t) return flow;
LL rest = flow;
for (int i = cur[u]; i && rest; i = e[i].next) {
cur[u] = i;
int v = e[i].v;
if (e[i].w&& d[v] == d[u] + 1) {
int k = dinic(v, min((LL)e[i].w, rest));
if (!k) d[v] = 0;
rest -= k, e[i].w -= k,e[i ^ 1].w += k;
}
}
return flow - rest;
}
void inline addE(int u, int v, int w) {
add(u, v, w), add(v, u, 0);
}
LL inline work() {
maxflow = 0;
while (bfs())
while (res = dinic(s, INF)) maxflow += res;
return maxflow;
}
// Find min-cut
bool vis[N];
void dfs(int u) {
//cerr << u << " dfs\n";
vis[u] = 1;
for (int i = head[u]; i; i = e[i].next) {
int v = e[i].v;
if (!vis[v] && e[i].w) dfs(v);
}
}
void minCut() {
for (int i = 1; i <= n; i++) vis[i] = 0;
dfs(s);
}
}
int id[S][S][2], idx;
char c[2] = {'W' , 'B'};
bool chk(char cr, char y) {
return y == '?' || cr == y;
}
bool inline chk(int x, int y, int w) {
char cr = c[w];
return chk(cr, s[x][y]) && chk(cr, s[x][y - 1]) && chk(cr, s[x - 1][y]) && chk(cr, s[x - 1][y - 1]);
}
void clr() {
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++) id[i][j][0] = id[i][j][1] = 0;
idx = 0;
}
void fl(int x, int y, int z) {
for (int i = x - 1; i <= x; i++)
for (int j = y - 1; j <= y; j++) {
if (s[i][j] != '?' && s[i][j] != c[z]) assert(false);
s[i][j] = c[z];
}
}
int main() {
int T; scanf("%d", &T);
while (T--) {
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) {
scanf("%s", s[i] + 1);
for (int j = 1; j <= m; j++) {
if ((i + j) & 1) {
if (s[i][j] == 'W') s[i][j] = 'B';
else if (s[i][j] == 'B') s[i][j] = 'W';
}
}
}
// for (int i = 1; i <= n; i++) {
// for (int j = 1; j <= m; j++) {
// cout << s[i][j];
// }
// cout << endl;
// }
for (int i = 2; i <= n; i++) {
for (int j = 2; j <= m; j++) {
for (int z = 0; z < 2; z++) {
if (chk(i, j, z))
id[i][j][z] = ++idx;
}
}
}
int ans = idx;
// cout << ans << endl;
int st = ++idx, t = ++idx;
MF::init(idx, st, t);
for (int i = 2; i <= n; i++) {
for (int j = 2; j <= m; j++) {
if (id[i][j][0]) {
MF::addE(st, id[i][j][0], 1);
for (int x = max(i - 1, 2); x <= min(i + 1, n); x++) {
for (int y = max(j - 1, 2); y <= min(j + 1, m); y++) {
if (id[x][y][1])
MF::addE(id[i][j][0], id[x][y][1], INF);
}
}
}
if (id[i][j][1]) {
MF::addE(id[i][j][1], t, 1);
}
}
}
ans -= MF::work();
MF::minCut();
printf("%d\n", ans);
for (int i = 2; i <= n; i++) {
for (int j = 2; j <= m; j++) {
if (id[i][j][0] && MF::vis[id[i][j][0]])
fl(i, j, 0);
if (id[i][j][1] && !MF::vis[id[i][j][1]])
fl(i, j, 1);
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (s[i][j] == '?') s[i][j] = 'W';
int t = s[i][j];
if ((i + j) & 1) t = t == 'W' ? 'B' : 'W';
putchar(t);
}
puts("");
}
clr();
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3880kb
input:
3 2 2 ?? ?? 3 3 BW? W?B ?BW 3 3 BW? W?W ?W?
output:
1 BW WB 1 BWW WBB WBW 4 BWB WBW BWB
result:
ok ok (3 test cases)
Test #2:
score: 0
Accepted
time: 27ms
memory: 3848kb
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 BW 9 WBBBWBW WBWBWWW BWBBWWB WBWWBWB BBWBBWB WWBBWWB BWBWBWB WWWWBBW BBWBBWW BWWWWBB 6 BWWBWWB WBBWWWB BWWBBBW BBBWBBB 0 B W W B B W W W B B 15 BWWW WBWW WWWB WBBW BWWB BWBW WBWB BWBW WBWW BWBW 8 WBW WWB WBW BWB WBW WBW BWB BWB 0 W B W B 1 WBWB WWBB 3 BW...
result:
ok ok (10000 test cases)
Test #3:
score: 0
Accepted
time: 27ms
memory: 3956kb
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 WBWWBW WWBBWB WWBWBW BBWBWB WWBWWB BBWBBW BWBWWB WBBWBW BWWBBB 0 W B W B W B W B B W 15 WBWB BWBW WBWB BWBB WBWW BBWB WWBW WBWB BWWB 1 BW WB BB 4 BWBBWWB WBWWBBW 20 WBWBWWWBW BWBWBBWWW WBWBBWBWW WWBWWBWWW WBBWBWBBW BWBBWWWWW WBWBWBWBW WWWWBWWWW BBWWWWWWW 28 WWBBWWWBWB WBWBWBWBBW BWBWBWBWBW WBWWBW...
result:
ok ok (10000 test cases)
Test #4:
score: 0
Accepted
time: 27ms
memory: 3940kb
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 WBBWBBB BBWBWWB BWBWBBW 13 WBWWWB WBBWBW BWWWWB BWWBWW WWBWWB WBWBWB WBWWBW WWBBWW WWWWBW BWBBWB 4 WBWBWB BWBWBB 0 WBBWBBWB 1 WB WB BW BB WW 12 WBBWB BWWBW WBBWB WWWWB WBWBW BWBBW WBWWB 7 BBWBW BWBWW WWWBB WBBWB BWBWW BBWBB WBWWB BBWWB 9 WWWW BBWB WWBW WBWB BWWB BW...
result:
ok ok (10000 test cases)
Test #5:
score: 0
Accepted
time: 28ms
memory: 3916kb
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 W 18 WBWBWWBWB BWBWBBWBW BBBBWBWBW WWWWBWWWB WWBBWBWBW WBWWWBWWW BWWWBWBWB 5 WBBBBBW BWBWWWB BBWBWBW 0 WBWWWB 0 W W W B W W W 23 WWWBWWBW WWWWBBWB BBWBWWWW BWBWBWBW BBWBWBWB BWBWBWWW WWBWWBWB BBWBBWBW 19 WWWBWBBW WBWWBWBW WWBWWWBW WWWWBWWB WBWBWBBW BWBBWBWB WBWWBWWB WWBWWBWW WBWBWWWB WWWWBBBB 0 WB...
result:
ok ok (10000 test cases)
Test #6:
score: 0
Accepted
time: 27ms
memory: 3872kb
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 W B W W W W B 0 WBWBWBWBWB 10 BWWBBWBB WBWWWBWW BWBWBWBB BBWBBBBB WBBWBBBB 2 WB BW WB BB WW WW 0 WWWBBWWBWB 6 BWB WBW BWB WBW 26 WWWBBWWBWB WWBBWBBWBW BWWBWBWBWW WBWBBBBBBB BWBBBBWBBW BWWWBWBWBB WWBBBWWBBB BBWBWBWBBW BWBWBWBWBW WBBWWBWBWB 0 WBBBWB 4 WBBBW BWWWW WWWWB WWWBW WWBBW WBWWB 0 B B B ...
result:
ok ok (10000 test cases)
Test #7:
score: 0
Accepted
time: 81ms
memory: 3880kb
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 WBBWWWWBWB WWBBWWWWWW WBWWBWWWWW BWWWWWWWBW WBBWWWBBWB WWBWWBWWBW WWWWBWWBWB BWBBWWBWWW 24 WBWWBBWWWB BWWWWBWBBW WBWBWWBBWB WBWBWBWWBW BWWBBWBWWB WWBWBBWWWB WBWBBWBWBW WWBWBWWBWB BBBWWWWBWW WWBWWWBWWB 33 WBWWBWBWWB BWWBWBWBWW WBWWBWWBWB WWBBWWBWWW WWWBWWWWWB BWWWBWWWBW BWBBW...
result:
ok ok (10000 test cases)
Test #8:
score: 0
Accepted
time: 81ms
memory: 3988kb
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 BBWBWBBBWB WWBBBWWBBB WBWBWBBWBW BWBWBBBBWB WBWBWWBWBW BWBBBBWBBB BWBBBBBBBW 31 BWWBWWBWBW WBBWWBBBWB BWWBBWWBWB BWWBWBBWBW WWBWWWWBWB BBWBWBWWBB WWBBBWBBWB BBWWBBWBWB WBWBWBBWBW BBBWBBBWWB 33 WBWWWBBWBB BWWBBWWBWW WBBWWBWBWW BWWBBWBWBW WWBWWBBBWW BBWBWBWWWW WWBWB...
result:
ok ok (10000 test cases)
Test #9:
score: 0
Accepted
time: 11ms
memory: 3912kb
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 WWWBBWBBBBWBBWWBWBBBWBWBWBWBWWBWBBWWBBWBBBBBWBBBBBBBBBBWBWWWWBWBBBWWWBBBBWWBWBWBWWWBWBWBWBBBBBWBWWBB 0 WWBWWWBBBBBBWBWBWBWBWWWBWBBBWBBWWBWBWBWBBBWBBWWBWBBWWBWWWBBBBBWWWBWWBBWBWWBBBBBBWBWBWBWBBBWBBBBBBBWB 0 WBWBWBBBBBBBWBBBWBWBBWWWBBBBWBBBWBWBWBBBWBWWWBWBWBBBBBWBWBWBBBBBWBWBBBWBWBBBWWWBWBWWWBWBWBWB...
result:
ok ok (10000 test cases)
Test #10:
score: 0
Accepted
time: 55ms
memory: 3904kb
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 B B B B B B B B B W B B B W B B B B B W W B W W B W B W W W W W B W B B B W W B B B B W B W W B B W B B B B B W B W B W B W B W B W B B B B B B B W B B W B B W B B B B B W B W W W B W B B B B W 0 W W W W W W W W W W B W W B B B W W W B W W W W W B W B W W B W W W W W W W W W W W B W W B W B ...
result:
ok ok (10000 test cases)
Test #11:
score: 0
Accepted
time: 105ms
memory: 4180kb
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 WWWBWBBBWW WBBWBWWWBW WBBBWWWBWB BWWWWBWWBW BWWWWWWBWB WBWBWBWWBW WWBWBBWWWB WWBBWWBWBW WBWBWWWBWB BWBWBWWWWB WBWWWBWWBW WBWBBWBWWW BWWBBWWBWW BWBWWBBWBB WBWWWWWBWW BWWWBWWWBB WBWBWBBWBW BWBWBWWWWW BWWBWWBWBW BWBWWWWWWB WBWWWWWWBW BWBWWBWWBW WBWBBWWWWB WWWBWWBWWW BBBWBBWBWB WBWBWWBWBW...
result:
ok ok (1000 test cases)
Test #12:
score: 0
Accepted
time: 105ms
memory: 4156kb
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 BBWBWBWBWBWBWBWBBBWBWWWWBBBWBWBBWBWWBBBWWBWBBWBWBWBWWBWBBBWWBWBWWWBWWBWWWBWWBWBWBBWWWBBBBWWBBWBWBBWB BWBWBWWWWBWBBBBWWWBWWBWBWBWBWWBWBWBBWWWBWBWWBBWBWBWBBWBWBWWBWBBBBWBWBWBWWWBBWBWBWBWBBBWWWBBWWBWBWWBW WBWBBBWBBWBBBBWWWBBWBWBBBWWWBBWBWBBBWBBWBWBBWWBWBWBWBWBBWBBWWWWWBBBBWWWWBWBBBWBWWWBBBWBWWBWBWW...
result:
ok ok (1000 test cases)
Test #13:
score: -100
Wrong Answer
time: 153ms
memory: 6604kb
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 WWWBWWBBWWWWBBBWBWWWWBWBWBWBWBWWBWBWWBWWBWBWWBWBWBWBWWBBBBWBBWBWBWWBWBWWBWWBWBWWWBWBBWWBWBWWBBWWBWWB BBWBWBWWBWBBWBWWWBWWWWBWBWBBWWBBWBWBWWBBWWWBBBWBWWBWBBWWWWBWBWWBWBBBBWBBWBBWBWBWWWBWBWWWBWBBWWWBWBBW WWBWBWBWWBWBBWBWBWBWWBBWWBWWBBWWBWBWBWWBWBWBWBBWWWWWBWBWWWWWWBWWBWWBWBWWBWWBWBWBWBWWBWWBBBWBW...
result:
wrong answer Integer parameter [name=ans] equals to 13523, violates the range [0, 10000] (test case 81)