Codeforces Round #264 (Div.2)
はい。
http://codeforces.com/contest/463
A. Caisa and Sugar
ざっくりと大意
・Caisaはパーティの準備のためにお金sを握りしめてスーパーでとある砂糖をn種類の中から1種類だけ買う。
・\(x_i\)ドル\(y_i\)セントの買い物のお釣りのセントの分はスイーツで受け取れるのでスイーツが多くもらえるようにお買い物をしたい。
・得ることの出来る最大のスイーツ量か、砂糖のお買い物すら出来なければ-1を出力する。
・"maybe he able to buy one. " 多分コレは1パックしか買わないという意味なので要注意。予算10ドルで砂糖2ドル70セントのものを1パックだとお釣りが30スイーツ、2パックだと60スイーツとかではなくて1パックしか買わない。
方針のようなもの
・全部計算する。
n,s=map(int,raw_input().split()) ans=-1 s*=100 while n: n-=1 x,y=map(int,raw_input().split()) t=x*100+y if s>=t: if y==0: ex=0 else: ex=100-y ans=max(ans,ex) print ans
買うのは1パックだけ、端数0のものは得られるスイーツも0、予算で買える砂糖かどうかの処理を間違えなければ多分大丈夫。
B. Caisa and Pylons
ざっくりと大意
・Caisaはn+1個ある0からnまでのパイロンをジャンプして越えるゲームをしている??
・パイロンを越していくとCaisaに \(h_k\) - \(h_{K+1}\) のエネルギーの加減が起きる。
・ゴールまでに一度もエネルギーが負の値にならないためにはスタート前にエネルギーがいくつあればよいか??
方針のようなもの
・シミュレートする。
n=int(raw_input()) l=[int(x) for x in raw_input().split()] l.insert(0,0) ans=chk=0 for i in range(n): chk=chk+(l[i]-l[i+1]) ans=min(ans,chk) print abs(ans)
スタートからゴールまでのエネルギーの加減をシミュレートしてminをチェックして0より小さくなればその絶対値が事前に必要なエネルギーだと思う。
シミュらなくても数列の中の最大値が解になるらしいのですがそれがどうしてそうなるのかは全く理解してないです。