AtCoder Beginner Contest 176

比赛链接:https://atcoder.jp/contests/abc176

A - Takoyaki

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n, x, t; 
    cin >> n >> x >> t;
    cout << (n + x - 1) / x * t << "\n";
}

B - Multiple of 9

#include <bits/stdc++.h>
using namespace std;
int main() {
    string s; 
    cin >> s;
    int mod = 0;
    for (char c : s) {
        mod += c - '0';
        mod %= 9;
    }
    cout << (mod == 0 ? "Yes" : "No") << "\n";
}

C - Step

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin >> n;
    long long ans = 0;
    int mx = 0;
    for (int i = 0; i < n; i++) {
        int x; 
        cin >> x;
        mx = max(mx, x);
        ans += mx - x;
    }
    cout << ans << "\n";
}

D - Wizard in Maze

#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 100;
const int dir[4][2] = {{-1, 0}, {0, -1}, {1, 0}, {0, 1}};

int h, w; 
int c_h, d_h, c_w, d_w;
int ans = -1;
string MP[N];
bool vis[N][N];

struct P{
    int x, y;
    int cnt;
};

bool inside(int x, int y) {
    return x >= 0 and x < h and y >= 0 and y < w;
}

void bfs() {
    deque<P> dque; 
    dque.push_front({c_h, c_w, 0});
    while (!dque.empty()) {
        auto [x, y, cnt] = dque.front();
        dque.pop_front();
        if (x == d_h and y == d_w) {
            ans = cnt;
            break;
        }
        if (vis[x][y]) continue;
        vis[x][y] = true;
        for (int i = 0; i < 4; i++) {
            int nx = x + dir[i][0];
            int ny = y + dir[i][1];
            if (inside(nx, ny) and MP[nx][ny] == '.')
                dque.push_front({nx, ny, cnt});
        }
        for (int nx = x - 2; nx <= x + 2; nx++) {
            for (int ny = y - 2; ny <= y + 2; ny++) {
                if (inside(nx, ny) and MP[nx][ny] == '.')
                    dque.push_back({nx, ny, cnt + 1});
            }
        }
    }
}

int main() {
    cin >> h >> w;
    cin >> c_h >> c_w >> d_h >> d_w;
    --c_h, --c_w, --d_h, --d_w;
    for (int i = 0; i < h; i++)
        cin >> MP[i];
    bfs();
    cout << ans << "\n";
}

E - Bomber

#include <bits/stdc++.h>
using namespace std;
int main() {
    int h, w; 
    cin >> h >> w;
    int m;
    cin >> m;
    int mxr = 0, mxc = 0;
    vector<int> row(h), col(w);
    vector<pair<int, int>> v;
    for (int i = 0; i < m; i++) {
        int x, y; 
        cin >> x >> y;
        --x, --y;
        mxr = max(mxr, ++row[x]);
        mxc = max(mxc, ++col[y]);
        v.emplace_back(x, y);
    }
    int inter = 0;
    for (auto [x, y] : v) {
        if (row[x] == mxr and col[y] == mxc)
            ++inter;
    }
    int cnt_mxr = count(row.begin(), row.end(), mxr);
    int cnt_mxc = count(col.begin(), col.end(), mxc);
    cout << (mxr + mxc - (inter == 1ll * cnt_mxr * cnt_mxc)) << "\n";
}

参考博客

https://www.cnblogs.com/lr599909928/p/13559189.html

https://www.cnblogs.com/lr599909928/p/13559245.html

posted @ 2020-08-28 00:00  Kanoon  阅读(296)  评论(0编辑  收藏  举报