QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#854214#9926. Flipping Pathsucup-team3691WA 6ms4492kbC++204.4kb2025-01-11 22:34:472025-01-11 22:34:48

Judging History

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

  • [2025-01-11 22:34:48]
  • 评测
  • 测评结果:WA
  • 用时:6ms
  • 内存:4492kb
  • [2025-01-11 22:34:47]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
using namespace chrono;

using ll = long long;
using ull = unsigned long long;

string to_string(const string &s) {
  return '"' + s + '"';
}

string to_string(bool b) {
  return b ? "true" : "false";
}

template <typename A, typename B>
string to_string(const pair<A, B> &p) {
  return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
}

template <typename T>
string to_string(const T &v) {
  string s = "{";
  bool first = true;
  for (const auto &it : v) {
    if (!first)
      s += ", ";
    else
      first = false;
    s += to_string(it);
  }
  return s += "}";
}

void debug_out() {
  cerr << endl;
}

template <typename T, typename... Args>
void debug_out(const T &first, const Args&... rest) {
  cerr << to_string(first) << " ";
  debug_out(rest...);
}

#define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

auto startTime = high_resolution_clock::now();
int get_time() {
  auto stopTime = chrono::high_resolution_clock::now();
  auto duration = duration_cast<milliseconds>(stopTime - startTime);
  return duration.count(); // in ms
}

int n, m;

bool solve(vector<vector<int>> v) {
  auto v2 = v;
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) {
      v2[i][j] = 0;
    }
  }

  auto v4 = v2;
  if (v[1][1] == 1) {
    v2[1][1] = 1;
  }

  for (int d = 1; d <= n + m - 1; ++d) {
    for (int i = 1; i <= n; ++i) {
      int j = d - i + 1;

      if (j < 1 || j > m) {
        continue;
      }

      if (v[i][j] % 2 != v2[i][j] % 2) {
        return 0;
      }

      //if (v2[i][j] > 400) {
        //assert(1 == 0);
      //  return 0;
      //}

      if (j + 1 <= m) {
        if (i + 1 <= n) {
          if (v[i][j + 1] % 2 != v2[i][j + 1] % 2) {
            if (v2[i][j] == 0) {
              v2[i][j] += 2;
              v4[i][j] += 2;
            }
            int x = v2[i][j] / 2;
            if (x % 2 == 0) {
              ++x;
            }
            v2[i][j + 1] += x;
            v2[i + 1][j] += v2[i][j] - x;
          } else {
            int x = v2[i][j] / 2;
            if (x % 2 == 1)
              ++x;

            v2[i][j + 1] += x;
            v2[i + 1][j] += v2[i][j] - x;
          }
        } else {
          v2[i][j + 1] += v2[i][j];
        }
      } else if (i + 1 <= n) {
        v2[i + 1][j] += v2[i][j];
      }
    }
  }
  
  for (int d = n + m - 1; d >= 1; --d) {
    for (int i = 1; i <= n; ++i) {
      int j = d - i + 1;

      if (j < 1 || j > m) {
        continue;
      }
      
      if (i + 1 <= n) {
        if (v4[i + 1][j] > 0) {
          v2[i][j] += v4[i + 1][j];
          v4[i][j] += v4[i + 1][j];
          v4[i + 1][j] = 0;
        }
      }
      
      if (j + 1 <= m) {
        if (v4[i][j + 1] > 0) {
          v2[i][j] += v4[i][j + 1];
          v4[i][j] += v4[i][j + 1];
          v4[i][j + 1] = 0;
        }
      }
    }
  }

  cout << "YES\n";
  cout << v2[n][m] << "\n";

  while (v2[n][m] > 0) {
    int i = 1, j = 1;
    string s;

    while (i < n || j < m) {
      --v2[i][j];
      v[i][j] ^= 1;
      if (j + 1 <= m && v2[i][j + 1] > 0) {
        s.push_back('R');
        ++j;
      } else if (i + 1 <= n && v2[i + 1][j] > 0) {
        s.push_back('D');
        ++i;
      } else {
        assert(1 == 0);
      }
    }
    --v2[n][m];
    v[n][m] ^= 1;
    cout << s << "\n";
  }
  
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) {
      if (v[i][j] == 1) {
        while (1);
      }
      //assert(v[i][j] == 0);
    }
  }

  return 1;
}

void solve() {
  cin >> n >> m;
  //n = 4;
  //m = 4;

  vector<vector<int>> v(n + 1, vector<int>(m + 1));

  for (int i = 1; i <= n; ++i) {
    string s;
    cin >> s;

    for (int j = 1; j <= m; ++j) {
      v[i][j] = (s[j - 1] == 'W') ? 0 : 1;
      //v[i][j] = rng() % 2;
    }
  }

  bool ok = solve(v);
  if (ok) {
    return;
  }

  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) {
      v[i][j] ^= 1;
    }
  }

  ok = solve(v);
  if (!ok) {
    cout << "NO\n";
  }
}

int main() {
  cin.tie(NULL);
  ios_base::sync_with_stdio(false);

  int t = 1;
  cin >> t;
  while (t--)
    solve();

  return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3660kb

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: 0
Accepted
time: 1ms
memory: 3668kb

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
1
R
NO
NO
YES
0
YES
1
D
NO
NO
YES
0
YES
1
RR
NO
NO
NO
NO
NO
NO
YES
0
YES
0
NO
YES
1
RD
NO
YES
1
DR
NO
YES
2
RD
DR
NO
NO
YES
2
RD
DR
NO
YES
1
DR
NO
YES
1
RD
NO
YES
0
YES
1
DD
NO
NO
NO
NO
NO
NO
YES
0
YES
1
RRR
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
0
YES
0
NO
NO
NO
NO
NO
YES
1
RRD
NO
NO
NO
...

result:

ok ok (323 test cases)

Test #3:

score: 0
Accepted
time: 1ms
memory: 3604kb

input:

278
2 4
BWBW
WWBB
2 4
BWBW
WWBW
2 4
BWBW
WWWB
2 4
BWBW
WWWW
2 4
BWWB
BBBB
2 4
BWWB
BBBW
2 4
BWWB
BBWB
2 4
BWWB
BBWW
2 4
BWWB
BWBB
2 4
BWWB
BWBW
2 4
BWWB
BWWB
2 4
BWWB
BWWW
2 4
BWWB
WBBB
2 4
BWWB
WBBW
2 4
BWWB
WBWB
2 4
BWWB
WBWW
2 4
BWWB
WWBB
2 4
BWWB
WWBW
2 4
BWWB
WWWB
2 4
BWWB
WWWW
2 4
BWWW
BBBB
2 ...

output:

NO
NO
NO
NO
NO
NO
YES
3
RRRD
RRDR
DRRR
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
2
RRDR
DRRR
NO
NO
NO
YES
1
DRRR
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
2
RRRD
DRRR
NO
NO
YES
2
RRRD
DRRR
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
1
DRRR
NO
NO
NO
YES
2
RRDR
DRRR
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
3
RRRD
RRDR
DRR...

result:

ok ok (278 test cases)

Test #4:

score: 0
Accepted
time: 1ms
memory: 3656kb

input:

333
3 3
BBW
WWB
BWB
3 3
BBW
WWB
BWW
3 3
BBW
WWB
WBB
3 3
BBW
WWB
WBW
3 3
BBW
WWB
WWB
3 3
BBW
WWB
WWW
3 3
BBW
WWW
BBB
3 3
BBW
WWW
BBW
3 3
BBW
WWW
BWB
3 3
BBW
WWW
BWW
3 3
BBW
WWW
WBB
3 3
BBW
WWW
WBW
3 3
BBW
WWW
WWB
3 3
BBW
WWW
WWW
3 3
BWB
BBB
BBB
3 3
BWB
BBB
BBW
3 3
BWB
BBB
BWB
3 3
BWB
BBB
BWW
3 3
BWB
...

output:

YES
3
RDRD
DRDR
DDRR
NO
NO
NO
NO
NO
YES
3
RDRD
DRRD
DDRR
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
3
RRDD
RDDR
DDRR
NO
NO
NO
NO
NO
YES
3
RRDD
RDRD
DDRR
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
3
RRDD
RDRD
DRRD
NO
NO
NO
NO
NO
YES
3
RRDD
RDRD
DRDR
NO
NO
NO
YES
2
RDRD
DRRD
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
2
RDRD
...

result:

ok ok (333 test cases)

Test #5:

score: 0
Accepted
time: 1ms
memory: 3732kb

input:

266
3 3
WWB
WWW
WWW
3 3
WWW
BBB
BBB
3 3
WWW
BBB
BBW
3 3
WWW
BBB
BWB
3 3
WWW
BBB
BWW
3 3
WWW
BBB
WBB
3 3
WWW
BBB
WBW
3 3
WWW
BBB
WWB
3 3
WWW
BBB
WWW
3 3
WWW
BBW
BBB
3 3
WWW
BBW
BBW
3 3
WWW
BBW
BWB
3 3
WWW
BBW
BWW
3 3
WWW
BBW
WBB
3 3
WWW
BBW
WBW
3 3
WWW
BBW
WWB
3 3
WWW
BBW
WWW
3 3
WWW
BWB
BBB
3 3
WWW
...

output:

NO
NO
NO
NO
YES
3
RRDD
RDRD
RDDR
NO
NO
NO
NO
NO
YES
1
RRDD
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
3
RRDD
DRRD
DDRR
NO
NO
NO
NO
NO
YES
3
RRDD
DRDR
DDRR
NO
NO
NO
YES
2
DRRD
DDRR
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
2
DRDR
DDRR
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
2
RDRD
RDDR
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
0
Y...

result:

ok ok (266 test cases)

Test #6:

score: 0
Accepted
time: 0ms
memory: 3608kb

input:

245
4 2
WW
BB
WB
BW
4 2
WW
BB
WB
WB
4 2
WW
BB
WB
WW
4 2
WW
BB
WW
BB
4 2
WW
BB
WW
BW
4 2
WW
BB
WW
WB
4 2
WW
BB
WW
WW
4 2
WW
BW
BB
BB
4 2
WW
BW
BB
BW
4 2
WW
BW
BB
WB
4 2
WW
BW
BB
WW
4 2
WW
BW
BW
BB
4 2
WW
BW
BW
BW
4 2
WW
BW
BW
WB
4 2
WW
BW
BW
WW
4 2
WW
BW
WB
BB
4 2
WW
BW
WB
BW
4 2
WW
BW
WB
WB
4 2
WW
B...

output:

NO
NO
YES
3
RDDD
DRDD
DDDR
NO
YES
3
RDDD
DRDD
DDRD
NO
NO
NO
NO
NO
YES
3
RDDD
DDRD
DDDR
NO
YES
1
RDDD
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
2
DRDD
DDDR
NO
NO
NO
NO
NO
YES
2
DRDD
DDRD
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
2
DDRD
DDDR
NO
NO
NO
NO
NO
YES
0
YES
1
DDDD
NO
NO
NO
NO
NO
NO
NO...

result:

ok ok (245 test cases)

Test #7:

score: 0
Accepted
time: 1ms
memory: 3856kb

input:

200
5 3
BBB
BBB
WBW
BBW
BBW
5 3
BBB
BBB
WBW
BBW
BWB
5 3
BBB
BBB
WBW
BBW
BWW
5 3
BBB
BBB
WBW
BBW
WBB
5 3
BBB
BBB
WBW
BBW
WBW
5 3
BBB
BBB
WBW
BBW
WWB
5 3
BBB
BBB
WBW
BBW
WWW
5 3
BBB
BBB
WBW
BWB
BBB
5 3
BBB
BBB
WBW
BWB
BBW
5 3
BBB
BBB
WBW
BWB
BWB
5 3
BBB
BBB
WBW
BWB
BWW
5 3
BBB
BBB
WBW
BWB
WBB
5 3
BBB
...

output:

NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
...

result:

ok ok (200 test cases)

Test #8:

score: 0
Accepted
time: 1ms
memory: 3828kb

input:

200
5 4
BWWB
WBWW
WBWW
WBWW
WBBW
5 4
BWWB
WBWW
WBWW
WBWW
WBWB
5 4
BWWB
WBWW
WBWW
WBWW
WBWW
5 4
BWWB
WBWW
WBWW
WBWW
WWBB
5 4
BWWB
WBWW
WBWW
WBWW
WWBW
5 4
BWWB
WBWW
WBWW
WBWW
WWWB
5 4
BWWB
WBWW
WBWW
WBWW
WWWW
5 4
BWWB
WBWW
WBWW
WWBB
BBBB
5 4
BWWB
WBWW
WBWW
WWBB
BBBW
5 4
BWWB
WBWW
WBWW
WWBB
BBWB
5 4
BW...

output:

NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
4
RRDRDDD
RDDRDRD
RDDDRDR
DDDDRRR
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
4
RRDRDDD
RDDRDRD
RDDDRRD
DDDDRRR
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
4
RRDRDDD
RDDRDRD
RDDDDRR
DDDDRRR
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
...

result:

ok ok (200 test cases)

Test #9:

score: -100
Wrong Answer
time: 6ms
memory: 4492kb

input:

5
200 200
WBWWWBWBWWWWBWWWBBBBBBWBWWBWWBBWBWWBWBBBWBBWBBWBWBBWWWWWWBWWWBBWBWBWBWBBWBWWBWWBWBBBWWWBWBBWWBBBBBWWBBBBWWBBWBWWWBBWBWBWWWWBBWBWWBWWWWWBWWBBBBBWBBWBWWWWWBWWWBWBWWBBBBWWBWWWWBWBBWBWBBWWBWWBBWBWBWWBWBWB
BBWBBBBBWBWWWWWWWWWWBBWWWWBWWBWWBBBBBWWWBWBWWBBWBBWWBBBBBWWBWBWBWWBWBWBBBBWWWWBWBBBBBWBBB...

output:

YES
638
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD...

result:

wrong answer Integer 638 violates the range [0, 400] (test case 1)