前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CF1365D Solve The Maze,CF官网通过,洛谷提交失败

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

作者头像
小码匠
发布2024-01-14 20:31:51
1720
发布2024-01-14 20:31:51
举报

大家好!我是小码匠。

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

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

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

  • 洛谷: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;
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小码匠和老码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档