CF1365D Solve The Maze,CF官网通过,洛谷提交失败

2024-01-14 20:31:51 浏览数 (3)

大家好!我是小码匠。

这道题是刚刷的,老码农惯用的套路,二选一。

另外一道题我没看明白题意,就选了这道。

这道题本地调试完,提交很诡异,

  • 洛谷:Unknown Error
  • CF:Happy New Year!

我当时很疑惑,老码农又出来嘚瑟了下:你明天提交肯定能AC。

打破砂锅问到底,我问为啥?

老码农收:洛谷代码提交给CF时会调用CF的接口,

CF的接口返回Happy New Year!, 其实也是一种正常状态,但洛谷就蒙圈了。

所以提示的:Unknown Error(当时听得半明白!)

我百度百科了下,原来俄罗斯

俄罗斯像中国一样,除公历外,还有古老的民间历法。根据东正教的历法,圣诞节和新年要比欧洲的节日晚两个星期。也就是说,1月7日是俄历圣诞节;现在1月14日是俄历新年。

时差是5小时。

今天还是分享代码,题解就不写了。

代码语言:javascript复制
#include <bits/stdc  .h>

using namespace std;

int cx[4] = {0, 0, 1, -1};
int cy[4] = {1, -1, 0, 0};

bool vis[55][55];
char g[55][55];

bool bfs(int n, int m, int cnt) {
    int ans = 0;
    queue<pair<int, int>> q;
    if (g[n][m] != '#') {
        q.push({n, m});
    }
    while (!q.empty()) {
        auto k = q.front();
        q.pop();
        if (g[k.first][k.second] == 'G') {
              ans;
        } else if (g[k.first][k.second] == 'B') {
            return false;
        }
        for (int i = 0; i < 4;   i) {
            int x = k.first   cx[i];
            int y = k.second   cy[i];

            if (x <= 0 || x > n || y <= 0 || y > m || g[x][y] == '#') {
                continue;
            }
            if (vis[x][y]) {
                continue;
            }
            vis[x][y] = true;
            q.push({x, y});
        }
    }
    return ans == cnt;
}

void best_coder() {
    int t;
    cin >> t;
    while (t--) {
        memset(vis, false, sizeof(vis));
        memset(g, '.', sizeof(vis));
        int n, m;
        cin >> n >> m;
        int cnt = 0;
        for (int i = 1; i <= n;   i) {
            for (int j = 1; j <= m;   j) {
                char c;
                cin >> c;
                if (c == '.' && g[i][j] == '#') {
                    continue;
                }
                g[i][j] = c;
                if (g[i][j] == 'G') {
                      cnt;
                } else if (g[i][j] == 'B') {
                    for (int s = 0; s < 4;   s) {
                        if (g[cx[s]   i][cy[s]   j] == '.') {
                            g[cx[s]   i][cy[s]   j] = '#';
                        }
                    }
                }
            }
        }

        if (bfs(n, m, cnt)) {
            cout << "Yes" << 'n';
        } else {
            cout << "No" << 'n';
        }
    }
}

void happy_coder() {

}

int main() {
    // 提升cin、cout效率
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    // 小码匠
    best_coder();

    // 最优解
    // happy_coder();

    return 0;
}

0 人点赞