今回は、AtCoder Beginner Contest 095Cを解いていきたいと思います。
ファーストフードチェーン「ピザアット」のメニューは「Aピザ」「Bピザ」「ABピザ」の3種類です。AピザとBピザはまったく異なるピザで、これらをそれぞれ半分に切って組み合わせたものがABピザです。AピザBピザ、ABピザ1枚あたりの値段はそれぞれA円、B円、C円です。
中橋くんは、今夜のパーティーのためにAピザX枚とBピザY枚を用意する必要があります。これらのピザを入手する方法は、AピザやBピザを直接買うかABピザ2枚を買ってAピザ1枚とBピザ1枚に組み替える以外にはありません。このためには最小で何円が必要でしょうか?なお、ピザの組み替えにより、必要な量を超えたピザが発生しても構いません。
A*X+B*Y
が最安値。C*max(X,Y)*2
が最安値。C*min(X,Y)*2+min(A,B)*abs(X-Y))
C*max(X,Y)*2
🐍これでいけそう。
A,B,C,X,Y=map(int,input().split())
print(min(A*X+B*Y,C*max(X,Y)*2,C*min(X,Y)*2+min(A,B)*abs(X-Y)))
🐍C問題が2行で書けたのは少し嬉しい。
WA
🐍なんでや!
A,B,C,X,Y = map(int,input().split())
print(min(X*A+Y*B,X*2*C+B*max(0,Y-X),Y*2*C+A*max(0,X-Y)))
🐍
X*2*C+B*max(0,Y-X)
とY*2*C+A*max(0,X-Y)
で分岐しているねんな。
a, b, c, x, y = [int(i) for i in input().split()]
if c < a/2 and c < b/2:
cost = max(x, y)*2*c
elif c < a/2:
if x < y:
cost = x*2*c + (y-x)*b
else:
cost = x*2*c
elif c < b/2:
if y < x:
cost = y*2*c + (x-y)*a
else:
cost = y*2*c
elif c < (a+b)/2:
cost = min(x, y)*2*c+(x-min(x,y))*a + (y-min(x,y))*b
else:
cost = x*a+y*b
print(cost)
🐍 あかん。書いてて頭破裂しそうになった。
第3回 | Pythonで競プロ|ABC129C| |
第4回 | AtCoder Beginner Contest 073CをPythonで解く |
第5回 | AtCoder Beginner Contest 095CをPythonで解く |
第6回 | AtCoder Beginner Contest 088BをPythonで解く |
第7回 | AtCoder Beginner Contest 087CをPythonで解く |
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント