はまやんはまやんはまやん

hamayanhamayan's blog

熱中症対策 [パソコン甲子園2018 予選 D]

https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Prelim/0383

考察過程

1. まだ難しくなる段階じゃない
2. 何か全探索する対象を探す
3. 1リットルを買う個数を全探索し、足りない分を500ミリリットル買うことにする

解法

https://onlinejudge.u-aizu.ac.jp/status/users/hamayanhamayan/submissions/1/0383/judge/3162124/C++14

1リットルを買う個数を全探索しよう。
まだ足りないのであれば、足りない分を500ミリリットルで買う。
500で切り上げすると、500ミリリットルを買うための個数が得られる。

int A, B, X;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> A >> B >> X;

    int ans = inf;
    rep(a, 0, 21) {
        int d = X - a * 1000;
        int cst = a * A;
        if (0 < d) {
            cst += (d + 499) / 500 * B;
        }
        chmin(ans, cst);
    }
    cout << ans << endl;
}