QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#746929#5485. MazeMansuryaaprakasshWA 0ms3856kbC++202.8kb2024-11-14 15:53:232024-11-14 15:53:23

Judging History

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

  • [2024-11-14 15:53:23]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3856kb
  • [2024-11-14 15:53:23]
  • 提交

answer

#include <bits/stdc++.h>
// pbds
/*#include <ext/pb_ds/assoc_container.hpp> // Common file*/
/*#include <ext/pb_ds/tree_policy.hpp>*/
/**/
/*using namespace __gnu_pbds;*/
using namespace std;

#ifdef LOCAL
#include "debug.h"
#else
#define debug(x...) 42
#endif
#define fast_io                                                                \
  ios_base::sync_with_stdio(false);                                            \
  cin.tie(NULL);                                                               \
  cout.tie(NULL);
#define ll long long
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()

/*typedef tree<int, null_type, less<int>, rb_tree_tag,*/
/*             tree_order_statistics_node_update>*/
/*    ordered_set;*/

bool vis[105][105];
bool cnt[105][105];
vector<string> v;
map<char, vector<pair<int, int>>> mp;
map<char, ll> peop;
void dfs(int i, int j, int n, int m, char a) {
  if (i < 0 || j < 0 || i >= n || j >= m || vis[i][j] || v[i][j] == 'X')
    return;
  vis[i][j] = 1;
  if (v[i][j] == '.') {
    peop[a]++;
    ll key = i * 1000 + j;
    cnt[i][j] = 1;
    if (mp.find(key) != mp.end()) {
      mp[a].push_back({i, j});
    } else {
      mp[a] = {{i, j}};
    }
  }
  dfs(i - 1, j, n, m, a);
  dfs(i + 1, j, n, m, a);
  dfs(i, j - 1, n, m, a);
  dfs(i, j + 1, n, m, a);
}

void solve() {
  ll n, m;
  cin >> n >> m;
  string a;
  v.resize(n);
  getline(cin, a);
  ll dot = 0;
  for (int i = 0; i < n; i++) {
    getline(cin, v[i]);
  }
  set<int> un;
  memset(cnt, 0, sizeof cnt);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      dot += (v[i][j] == '.');
      if (v[i][j] == 'X' || v[i][j] == '.' || v[i][j] == ' ')
        continue;
      memset(vis, 0, sizeof vis);
      dfs(i, j, n, m, v[i][j]);
    }
  }
  vector<pair<int, char>> vp;
  for (auto c : peop) {
    vp.push_back({c.second, c.first});
  }
  sort(rall(vp));
  vector<vector<bool>> check(n, vector<bool>(m, 0));
  ll ret = 0;
  for (auto x : vp) {
    bool f = 0;
    for (auto cords : mp[x.second]) {
      if (!check[cords.first][cords.second]) {
        check[cords.first][cords.second] = 1;
        f = 1;
      }
    }
    ret += f;
  }
  cout << ret << " ";
  int nvis = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      nvis += cnt[i][j];
    }
  }

	cout<<(dot-nvis)<<"\n";
}

int main() {
  fast_io;
#ifdef LOCAL
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
  freopen("output.txt", "w", stderr);
#endif
  ll t = 1;
  /*cin >> t;*/
  while (t--) {
#ifdef LOCAL
    cout << "TEST CASE " << t + 1 << "\n";
#endif
    solve();
  }
#ifdef LOCAL
  cout << endl
       << "finished in " << clock() * 1.0 / CLOCKS_PER_SEC << " sec\n\n";
#endif
  return 0;
}

详细

Test #1:

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

input:

10 20
XXXXXXXAXXXXXXXBXXXX
X.. ..X.X...... ...X
X.XXX...X.X.XXXXXX.X
X.X.XXXXX.X.X....X.X
X.X... ...X.X.XX.X.X
X.X.X.XXXXXXX.XX.X.X
X.X.X.X...X...X....X
X.X.X.XXXXXXX.XXXX.X
X...X.X X.. ..X..X.X
XXXXXXXDXXXXXXXXCXXX

output:

2 3

result:

ok 2 number(s): "2 3"

Test #2:

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

input:

3 5
XDRVX
X.X.X
XXXXX

output:

2 0

result:

ok 2 number(s): "2 0"

Test #3:

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

input:

3 5
NAQXX
X X.X
XXXXX

output:

0 1

result:

ok 2 number(s): "0 1"

Test #4:

score: -100
Wrong Answer
time: 0ms
memory: 3856kb

input:

10 68
XXXXXXPXXXXXXXXCXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXIXXRXXXXXXXXXKXXX
X.XX..XXXX.X.X.XXXXXX..XXXXX.X.X......X ......X.X.. X.....XXX..  X.X
X X.X.XXX.. X..X..X ..X..XX.XX.XXXXX.X....X.X.X.XXXX.X. X..X.X.....X
X.X..XX .XX..X....X.XX.X..XXX....X.X. .X....X.X .XX.X...X.XXX.. X..X
X.X..X..XXXXXX .. ...

output:

6 116

result:

wrong answer 1st numbers differ - expected: '4', found: '6'