読者です 読者をやめる 読者になる 読者になる

Codeforces Round #266 (Div. 2)

はい。
http://codeforces.com/contest/466

A. Cheap Travel

ざっくりと大意

・電車に合計n回乗る ・運賃支払い方法は1回毎にaルーブルと、m回でbルーブルがある 最もお安いのはいくらか

方針のようなもの

・毎回aルーブルと、mのセット分がn回以下で足りない分を毎回aルーブルでと、mのセット分がn回分より余ってaルーブルは使わない の中で比較する

n,m,a,b=map(int,raw_input().split())
print min(a*n,(n/m)*b+n%m*a,(n/m)*b+b)

多分必ずしもセット払いを使ったほうが安い保証はないと思うし、保証するしないも問題文に書かれてないと思う。セット払いの単価がaより高い場合やセット払いの条件の乗る回数が極端に多いのに実際に乗るnが小さい場合は毎回aのがお安くなるはず。
後はセット払いbを余りが出るかもしれないのを無視して全部セット払いか、nを超えない範囲でセット払いと端数回をa払いを比較。セットm回で割り切れる場合も計算されるようにしておけば、これら以外の支払いでお安くなることはない(と思う)。

同室ならHack成功できるチャンスだった群
http://codeforces.com/contest/466/submission/7753366
m * a > b のif分岐で単価を気にしてるっぽいけどよくわからん
http://codeforces.com/contest/466/submission/7753389
http://codeforces.com/contest/466/submission/7754414

B. Wonder Room

ざっくりと大意

・a*b平方メートルの大きさの四角い部屋があって、n人の学生を収容したい。
・ただし、1人あたり6平方メートルを確保しないと法律違反になる。
・a,bを伸ばすことができるので最小の面積拡大で収容できるように

方針のようなもの

・最低限必要な面積がn6。aとbを2重ループでn6以上になった最小をメモしておいて伸ばさずに面積確保できるようになったら終了と思ったけどあんまりうまく行かずWA

同室ならHack成功できるチャンスだった群
http://codeforces.com/contest/466/submission/7763054