QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#883564 | #9926. Flipping Paths | LuminousYT | WA | 1ms | 3584kb | C++20 | 2.8kb | 2025-02-05 17:01:17 | 2025-02-05 17:01:24 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int n, m;
cin >> n >> m;
vector<string> grid(n);
for (int i = 0; i < n; ++i) cin >> grid[i];
bool all_white = true, all_black = true;
int black = 0;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
if (grid[i][j] == 'W') all_black = false;
else all_white = false;
if (grid[i][j] == 'B') black++;
}
}
// 如果已经全白或全黑
if (all_white || all_black) {
cout << "YES\n0\n";
continue;
}
// 处理单行或单列的情况
if (n == 1 || m == 1) {
int total = n * m;
if (total % 2 == 0) {
// 总单元格数为偶数,只有初始全黑或全白才能通过0次操作,或者通过一次操作得到全白或全黑
if (black == 0 || black == total) {
cout << "YES\n0\n";
} else if (total - black == 0 || total - black == total) {
// 一次操作可以翻转所有单元格,得到全白或全黑
cout << "YES\n1\n";
if (n == 1) {
cout << string(m - 1, 'R') << '\n';
} else {
cout << string(n - 1, 'D') << '\n';
}
} else {
cout << "NO\n";
}
} else {
// 总单元格数为奇数,只有初始全白或全黑,或者一次操作后全白或全黑
if (black == 0 || black == total) {
cout << "YES\n0\n";
} else {
// 检查一次操作是否可以转为全白或全黑
if (total - black == 0) {
cout << "YES\n1\n";
if (n == 1) cout << string(m - 1, 'R') << '\n';
else cout << string(n - 1, 'D') << '\n';
} else if (total - black == total) {
cout << "YES\n1\n";
if (n == 1) cout << string(m - 1, 'R') << '\n';
else cout << string(n - 1, 'D') << '\n';
} else {
cout << "NO\n";
}
}
}
continue;
}
// 处理行和列都大于1的情况,构造两条路径
string path1 = string(m - 1, 'R') + string(n - 1, 'D');
string path2 = string(n - 1, 'D') + string(m - 1, 'R');
cout << "YES\n2\n";
cout << path1 << '\n' << path2 << '\n';
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3584kb
input:
4 3 3 WBB BWB BBW 1 5 WWWWW 2 2 BB BB 4 1 W B B W
output:
YES 2 RRDD DDRR YES 0 YES 0 NO
result:
ok ok (4 test cases)
Test #2:
score: -100
Wrong Answer
time: 1ms
memory: 3584kb
input:
323 1 2 BB 1 2 BW 1 2 WB 1 2 WW 2 1 B B 2 1 B W 2 1 W B 2 1 W W 1 3 BBB 1 3 BBW 1 3 BWB 1 3 BWW 1 3 WBB 1 3 WBW 1 3 WWB 1 3 WWW 2 2 BB BB 2 2 BB BW 2 2 BB WB 2 2 BB WW 2 2 BW BB 2 2 BW BW 2 2 BW WB 2 2 BW WW 2 2 WB BB 2 2 WB BW 2 2 WB WB 2 2 WB WW 2 2 WW BB 2 2 WW BW 2 2 WW WB 2 2 WW WW 3 1 B B B 3 ...
output:
YES 0 NO NO YES 0 YES 0 NO NO YES 0 YES 0 NO NO NO NO NO NO YES 0 YES 0 YES 2 RD DR YES 2 RD DR YES 2 RD DR YES 2 RD DR YES 2 RD DR YES 2 RD DR YES 2 RD DR YES 2 RD DR YES 2 RD DR YES 2 RD DR YES 2 RD DR YES 2 RD DR YES 2 RD DR YES 2 RD DR YES 0 YES 0 NO NO NO NO NO NO YES 0 YES 0 NO NO NO NO NO NO ...
result:
wrong answer cell (1,2) contains different color with (1,1) after all ops. (test case 18)