雑記・まとめ

個人的な備忘録

abc095c

この問題…過去の社内コンテストで同じの出たぞ…!!

一応全探索で解いた

ピザCの枚数が決まればピザAとピザBの枚数も決まるからピザCの枚数をループで回しながら答えを探す

 

 
#include<bits/stdc++.h>
using namespace std;

int a, b, c, x, y;

int main(){

    cin >> a >> b >> c >> x >> y;

    int ans = 1<<30;
    int n = max(x, y) * 2;
    for(int i=0;i<=n;i++){
        int na = max(x-i, 0);
        int nb = max(y-i, 0);
        ans = min(ans, a * na + b * nb + 2 * c * i);
    }

    cout << ans << endl;
}

 

条件式でやるときは

・ハーフピザが高い→X枚ピザA,Y枚ピザB

・ハーフピザが安い→min(X, Y)までハーフピザ,残りをピザAもしくはピザBとハーフピザの安い方を買う

 

#include<bits/stdc++.h>
using namespace std;

int a, b, c, x, y;

int main(){

    cin >> a >> b >> c >> x >> y;

    int ans = 0;
    if(a + b < 2 * c) ans = a * x + b * y;
    else if(x < y) ans = min(2 * c * y, 2 * c * x + b * (y-x));
    else ans = min(2 * c * x, 2 * c * y + a * (x-y));

    cout << ans << endl;
}