QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#665088#5582. Chocolate Chip Fabricationenze114514WA 0ms3592kbC++202.8kb2024-10-22 02:52:002024-10-22 02:52:00

Judging History

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

  • [2024-10-22 02:52:00]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3592kb
  • [2024-10-22 02:52:00]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;

#define pb push_back

const ld pi = 3.14159265358979323846;
const ll INF = 1e18;
const int mod = (int)1e9 + 7;

template<typename T>
T chmax(T a, T b) {
    return a > b ? a : b;
}

template<typename T>
T chmin(T a, T b) {
    return a > b ? b : a;
}

const int N = 3e3 + 1, M = N * 2;

int dirx[4] = {0, 0, 1, -1}, diry[4] = {1, -1, 0, 0};

void solve() {
    int n, m;
    cin >> n >> m;

    char c[n][m];
    queue<pair<int, int>> mp;

    int deg[n][m], v[n][m];
    for(int i = 0; i < n; i++){
        string s;
        cin >> s;

        for(int j = 0; j < m; j++){
            deg[i][j] = 0;
            c[i][j] = s[j];
        }
    }

    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            for(int k = 0; k < 4; k++){
                int x = i + dirx[k], y = j + diry[k];
                if(x < 0 || y < 0 || x >= n || y >= m) continue;
                if(c[x][y] == 'X'){
                    deg[i][j]++;
                }
            }
        }
    }

    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            if(deg[i][j] != 4 && c[i][j] == 'X'){
                mp.push({i, j});
            }
        }
    }

    int qwq = 0;
    while(!mp.empty()){
        queue<pair<int, int>> q;

        int sz = mp.size();
        while(sz--){
            int x = mp.front().first, y = mp.front().second;
            mp.pop();

            int owo = 0;
            if(c[x][y] != 'X'){
                continue;
            }

            for(int k = 0; k < 4; k++){
                int dx = x + dirx[k], dy = y + diry[k];
                if(dx < 0 || dy < 0 || dx >= n || dy >= m){
                    owo++;
                    continue;
                }
                if(c[dx][dy] != 'X'){
                    owo++;
                }
            }
            if(owo) q.push({x, y});
        }

        if(!q.empty()) qwq++;
        else break;

        while(!q.empty()){
            auto p = q.front();
            q.pop();

            c[p.first][p.second] = '-';
            for(int i = 0; i < 4; i++){
                int x = p.first + dirx[i], y = p.second + diry[i];
                if(x < 0 || y < 0 || x >= n || y >= m) continue;
                if(c[x][y] == 'X'){
                    if(deg[x][y]-- <= 3){
                        mp.push({x, y});
                    }
                }
            }
        }
    }
    cout << qwq << endl;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int t = 1;
    // cin >> t;

    while (t--) {
        solve();
    }

    return 0;
}

详细

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3592kb

input:

5 5
-X-X-
XXXXX
XXXXX
-XXX-
--X--

output:

3

result:

wrong answer 1st lines differ - expected: '2', found: '3'