AtCoder ABC120

ABC3完。1WA。いや3完したけどさあって感じ。

A

そのまんま。

int main() {
    int a, b, c;
    cin >> a >> b >> c;
    int d = b / a;
    cout << min(d, c) << endl;
}

B

ありうる値を愚直に探索したあと、でかい順にソートして前からK番目が答え。なんかもっといい答え方ある気がしてモヤモヤする。ああ、forループを100から始めればいいのか。 つうか変数名にhogeて。いくら競プロとはいえ、プログラムの神をも畏れぬ大罪である。

int main() {
    int a, b, k;
    cin >> a >> b >> k;
    int ans = 1;
    vector<int> hoge;
    for(int i=1; i<=100; i++) {
        if(a % i == 0 && b % i == 0) {
            hoge.push_back(i);
        }
    }

    sort(hoge.begin(), hoge.end(), greater<int>());
    k--;
    ans = hoge[k];
    cout << ans << endl;
}

C

最初は累積和でなんやかんやしてたら見事にWA。 もっとシンプルに考えればよくて、要は0と1のペアがいくつできるかを見ればいいのだから、0か1の出現回数のうちのちっこい方に2をかけると答えになる。

int main() {
    string S;
    cin >> S;
    const int len  = S.size();
    int       zero = 0;
    int       one  = 0;
    for (int i = 0; i < len; i++) {
        if (S[i] == '0') {
            zero++;
        } else {
            one++;
        }
    }
    int ans = min(zero, one) * 2;

    cout << ans << endl;
}

D

たぶんUnionFindだの連結成分がどうだのするんだろうなあって思いながら鼻くそほじくってた。

所感

最近ちょっとちんたらしすぎちゃうの?