QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#219336#6739. TeleportAshokaAC ✓322ms48580kbC++201.5kb2023-10-19 12:37:262023-10-19 12:37:27

Judging History

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

  • [2023-10-19 12:37:27]
  • 评测
  • 测评结果:AC
  • 用时:322ms
  • 内存:48580kb
  • [2023-10-19 12:37:26]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;
using i64 = long long;

constexpr int dx[] = {-1, 0, 0, 1}, dy[] = {0, -1, 1, 0};

int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, k;
  cin >> n >> k;
  vector<string> g(n);
  for (int i = 0; i < n; ++i) {
    cin >> g[i];
  } 
  vector<vector<int>> vis(n, vector<int> (n, 1E9));  

  auto check = [&](int a, int b, int d) {
    if (a < 0 || a >= n || b < 0 || b >= n) return false;
    if (g[a][b] == '*') return false;
    if (d + 1 >= vis[a][b]) return false;
    return true;
  };

  auto bfs = [&]() {
    vis[0][0] = 0;
    queue<pair<int, int>> q;
    q.push({0, 0});
    while (q.size()) {
      auto [x, y] = q.front();
      q.pop();
      if (x == n - 1 && y == n - 1) {
        return vis[x][y];
      }
      int d = vis[x][y];
      for (int i = 0; i < 4; ++i) {
        int a = x + dx[i], b = y + dy[i];
        if (!check(a, b, d)) continue;
        vis[a][b] = d + 1;
        q.push({a, b});
      }
      for (int i = 1; i <= k; ++i) {
        if (i & 1) {
          int a = y + i / 2 + 1, b = x + i / 2;
          if (!check(a, b, d)) continue;
          vis[a][b] = d + 1;
          q.push({a, b});
        } else {
          int a = x + i / 2, b = y + i / 2;
          if (!check(a, b, d)) continue;
          vis[a][b] = d + 1;
          q.push({a, b});
        }
      }
    }
    return -1;
  };

  cout << bfs() << "\n";
  return 0;
}

详细

Test #1:

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

input:

3 2
.*.
.*.
...

output:

3

result:

ok 1 number(s): "3"

Test #2:

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

input:

3 3
.*.
.*.
...

output:

2

result:

ok 1 number(s): "2"

Test #3:

score: 0
Accepted
time: 21ms
memory: 8228kb

input:

961 4
...*.*..*.....*.*..*..*..*.*.*.*.....*.....*....*..*...*....*.........*....*....*...*......*..*..*...*..*...*.....*...*...*.*.*.........**..**.......*.......*...*...*.*.*........*....*..*..*...*.....*.*......**.**..**...*..*.**.....*....*.*.*..*..*..*.*..*.*..*......*..*..*.*......*...*.*...*....

output:

540

result:

ok 1 number(s): "540"

Test #4:

score: 0
Accepted
time: 7ms
memory: 8432kb

input:

975 434
.*......*...*....*......*..*...*...**....*....*.......*...*.....*..*..*.*.*..*.*..*..*.*....*.*.*..*...*.*.....*......*.*...*......*..*..*......**..**.......*...*.*..*..*.*.**....*.*.*.....*....**.*..*..**.*..*.....*.*......*..*...*..*...*....**...*....*..*.*.*...........*..*.**.*.*..*.*..**...

output:

5

result:

ok 1 number(s): "5"

Test #5:

score: 0
Accepted
time: 9ms
memory: 8544kb

input:

966 19
..*.*.*........*.*..*.**..*....*..*..*....*.**..*.*.*..*.*.*..**....*.*.*....*.....*...........*.*..*.....*..*...*....*.*...*.*...*....*...*...*.*.*....*.*....**.*.......*....*.*.*...*..*..*..*.*...*...*...*..*..*..........*.*....*.*......*...*..**....*.*....**.....*..*..*..*.*....*...*..*.*....

output:

104

result:

ok 1 number(s): "104"

Test #6:

score: 0
Accepted
time: 8ms
memory: 8352kb

input:

973 199
..**.*...*.*...*.*.*.*.**..*.*.*..*......*.....*.*.*..*...**.....*.*..*.*..*...*....*..*...*....*.*...*.*......*..*.*.*.*......**......*.*.*.*.*.*...*...*...*....*......*.*.*.*..*..*..*...*..*.*....*....*.*...*..*..*.*..**.**..*.**....*.*...*..**..**...*......*.....*.....*..*.*.......*.*.*.....

output:

10

result:

ok 1 number(s): "10"

Test #7:

score: 0
Accepted
time: 11ms
memory: 8516kb

input:

984 95
.....*.*...*....*..*....*.*....**.**......*....*.*.*.......*.....*.*..*....*..*....*.*.....*..*.......*.*......*.*....*.....*......*...*....*....*......*....*.*...*........*......*.*....*.*...*....*..**....*.*.*.**....*..*.*..*..*.*......*..*......*.*......*...*......*.......*...*....*...**.....

output:

21

result:

ok 1 number(s): "21"

Test #8:

score: 0
Accepted
time: 322ms
memory: 48580kb

input:

2996 2
..*..*.....*..*.....*....**..*...........*..*........*..*..*.*..*..*.*.*.**.*.....**.*.......*.......*..*....*.....*..*.*.*....**.....*..**.....*.....*.......*.*.*.*....*...*..*.**......**..*.*...**..*..*......*..*.*...*......*.*.*.*...**.**..*.*........*.*..*...**......*.*..*.*..*....*.*.*.*...

output:

3354

result:

ok 1 number(s): "3354"

Test #9:

score: 0
Accepted
time: 41ms
memory: 45512kb

input:

2905 1023
.........*..*.**.....*...*.*....*.*.**.*..*...*..*....*...*.**.*.*.**..*......*...*.**..*...*..*.........*.........*.*.....**.*.*........*.....*.*....*..*.*.....*..*..*..*.*..*....**...*.*..*....*......*.........*.*.*.*......**.**.**..*.*.*..*..**..*..*...*...*.*.......*..*..*....*.*.........

output:

6

result:

ok 1 number(s): "6"

Test #10:

score: 0
Accepted
time: 97ms
memory: 47932kb

input:

2978 104
.*.........*...**.....*...*........*..*...*.*.*.....*........*.*...*.....*...*....*...*..*...*..*..*....*...*..*.*....*....*...*.......*.*.....*.*.......*.*..*...*.*.......*.*.*..........*.*..*.*..**.*....*.*.*..*...*.*.*.....*....*...*.*.*.*.........*.*.....**.*.*..*.*....*........*...*.**...

output:

58

result:

ok 1 number(s): "58"