QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#64356#4434. LemursSa3tElSefr#AC ✓1904ms82688kbC++232.6kb2022-11-24 18:17:432022-11-24 18:17:46

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-11-24 18:17:46]
  • 评测
  • 测评结果:AC
  • 用时:1904ms
  • 内存:82688kb
  • [2022-11-24 18:17:43]
  • 提交

answer

/// Brrrr Brrrr
#pragma GCC optimize("O3")
#pragma GCC optimize ("unroll-loops")
#pragma GCC target("avx,avx2,fma")

#include "bits/stdc++.h"

#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update

using namespace std;
using namespace __gnu_pbds;

#define pb push_back
#define F first
#define S second
#define f(i, a, b)  for(int i = a; i < b; i++)
#define all(a)  a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()
#define sz(x) (int)(x).size()
#define mp(x,y) make_pair(x,y)
#define popCnt(x) (__builtin_popcountll(x))
#define int ll

using ll = long long;
using ii = pair<int, int>;
using ull = unsigned long long;

const int N = 2e5+5, LG = 18, MOD = (119 << 23) + 1;
const long double PI = acos(-1);
const long double EPS = 1e-7;

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

int n, m, k;
char grid[1005][1005];
vector<vector<int>> BFS(vector<ii> sources) {

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

    queue<ii> q;
    for(auto & p : sources) {
        dist[p.first][p.second] = 0;
        q.push(p);
    }

    while(q.size()) {

        int x, y;
        tie(x,y) = q.front();
        q.pop();

        f(k,0,4) {
            int nx = x + dx[k];
            int ny = y + dy[k];
            if(nx >= 1 && ny >= 1 && nx <= n && ny <= m) {
                if(dist[nx][ny] == -1) {
                    q.push({nx,ny});
                    dist[nx][ny] = dist[x][y] + 1;
                }
            }
        }

    }


    return dist;
}
void doWork() {

    cin >> n >> m >> k;

    vector<ii> dots;
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            cin >> grid[i][j];
            if(grid[i][j] == '.')
            dots.push_back({i,j});
        }
    }

    auto dist = BFS(dots);

    vector<ii> hashes;
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            if(dist[i][j] > k || dist[i][j] == -1) {
                hashes.push_back({i,j});
            }
        }
    }


    dist = BFS(hashes);

    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) if(grid[i][j] == 'x'){
            if(dist[i][j] > k || dist[i][j] == -1) {
                cout << "NIE\n";
                return;
            }
        }
    }

    cout << "TAK\n";

}
int32_t main() {
#ifdef ONLINE_JUDGE
    ios_base::sync_with_stdio(0);
    cin.tie(0);
#endif // ONLINE_JUDGE

    int t = 1;
    cin >> t;
    while (t--) {
        doWork();
    }
    return 0;
}

///Look at my code ya codeomk



详细

Test #1:

score: 100
Accepted
time: 27ms
memory: 4436kb

input:

4000
1 1 1
.
1 1 1
x
1 1 1000
.
1 1 1000
x
1 1000 4
..........................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx....xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...

output:

TAK
TAK
TAK
TAK
TAK
NIE
NIE
TAK
NIE
TAK
NIE
NIE
TAK
TAK
NIE
TAK
TAK
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
TAK
NIE
NIE
TAK
TAK
TAK
NIE
NIE
NIE
TAK
TAK
NIE
NIE
TAK
NIE
NIE
NIE
TAK
NIE
NIE
NIE
TAK
NIE
NIE
NIE
NIE
TAK
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
TAK
NIE
NIE
NIE
TAK
TAK
...

result:

ok 4000 lines

Test #2:

score: 0
Accepted
time: 1904ms
memory: 82688kb

input:

36
1000 1000 2
....xxxx..............xxxxxx..........xx..xxxx......xxxxxxxxxxx.........xxxxxxxxxx...xxxxxx....xxxxxx.......xxxxxx....xxxxxx......................................xx.............xxxxxxxxx......xxxxxxx................xxxxxx..xxxxxx....xxxxxx..............xxxxxxxxxxxxxxxxxxxxxxxxxxxx...x...

output:

TAK
NIE
NIE
TAK
TAK
NIE
TAK
NIE
NIE
TAK
TAK
NIE
NIE
NIE
NIE
TAK
NIE
TAK
TAK
TAK
TAK
NIE
TAK
NIE
NIE
TAK
NIE
TAK
NIE
NIE
NIE
TAK
TAK
NIE
NIE
NIE

result:

ok 36 lines

Test #3:

score: 0
Accepted
time: 1863ms
memory: 65884kb

input:

41
1000 1000 999
.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...

output:

NIE
TAK
TAK
NIE
TAK
TAK
TAK
NIE
TAK
NIE
TAK
TAK
TAK
NIE
TAK
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
TAK
NIE
TAK
NIE
NIE
NIE
NIE
TAK
TAK
NIE
NIE
NIE
TAK
NIE
NIE
NIE

result:

ok 41 lines

Extra Test:

score: 0
Extra Test Passed