1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AtCoder Beginner Contest 338 振り返り

Posted at

ABC338

概要

A - Capitalized?

考えてたこと
少し悩みましたが、一文字目だけ取ってきてisUpper, 残りをisLowerで判別。

提出したもの

a.cpp
int main() {
    string s;
    cin >> s;
    bool ans = isupper(s[0]);
    for (int i = 1; i < s.size(); i++) {
        if (!(islower(s[i]))) {
            ans = false;
        }
    }
    if (ans) {
        cout << "Yes" << endl;
    } else {
        cout << "No" << endl;
    }
    return 0;
}

振り返り
他にも大文字 -> 小文字の順に辞書順で並ぶからそれを活かして...とかも考えたけど上のやり方が一番楽そう?

B - Frequency

考えてたこと
アルファベット26文字で入力1000文字だから気合いでなんとかなる、あとはアルファベット順を早いものを出力するように注意するだけ。

提出したもの

b.cpp
int main() {
    string s;
    cin >> s;
    char ans;
    int ans_max = 0;
    map<char, int> cnt;
    fore(a, s) {
        if (cnt.count(a)) {
            cnt[a]++;
        } else {
            cnt[a] = 1;
        }
        if (ans_max < cnt[a]) {
            ans_max = cnt[a];
            ans = a;
        } else if (ans_max == cnt[a] && a < ans) {
            ans = a;
        }
    }
    cout << ans << endl;
    return 0;
}

振り返り
これが一番簡単そう。

C - Leftover Recipes

考えてたこと
A,Bのそれぞれの人数を全探索してたら間に合わないだろうなぁ...最大だから片方全探索してもう片方の最大値だけ常に求めれば良いかなぁ...と考えたら大体そんな感じだった問題。

提出したもの

c.cpp
int main() {
    ll n;
    cin >> n;
    vector<ll> vec_q, vec_a, vec_b;
    rep(i, 0, n) {
        ll q;
        cin >> q;
        vec_q.push_back(q);
    }
    rep(i, 0, n) {
        ll a;
        cin >> a;
        vec_a.push_back(a);
    }
    rep(i, 0, n) {
        ll b;
        cin >> b;
        vec_b.push_back(b);
    }

    // 作った人数分の料理
    ll ans = 0;
    ll a_max;
    ll b_max = 100100100;

    // Aの人数を回すfor文
    for (ll i = 0; i <= 1000000; i++) {
        a_max = i;
        // 材料を回すfor文
        for (ll j = 0; j < n; j++) {
            if (vec_q[j] >= vec_a[j] * i) {
                if (vec_b[j] != 0) {
                    b_max = min((vec_q[j] - vec_a[j] * i) / vec_b[j], b_max);
                }
            } else {
                break;
            }
            if (j == n - 1) {
                ans = max(ans, a_max + b_max);
            }
        }
    }
    cout << ans << endl;
    return 0;
}

振り返り
料理の必要グラムが0のパターンがあることに気づいてなかったことと、気づいた上でそれを処理に入れるのに結構苦戦した。

感想

Dが水色...またの機会に解きます。一旦は緑までは解説読んで解くことを目標に。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?