Codeforces Round #287 (Div. 2)
はい。
http://codeforces.com/contest/507
A. Amr and Music
ざっくりと大意
・n種類の楽器がありi番目の楽器を習得するには\(a_i\)日を必要とする。
・k日を掛けて楽器を練習して習得できる楽器の最大の数はいくつか。
方針のようなもの
・小さい方から見る。
n,k=map(int,raw_input().split()) a=[(int(x),i+1) for i,x in enumerate(raw_input().split())] a.sort() ans,chk=[],0 for i in a: if chk+i[0]<=k: ans.append(i[1]) chk+=i[0] else: break ans.sort() print len(ans) if len(ans): for i in ans: print i,
習得日数を小さいものから見る。久しぶりにenumerate使った。便利だった。
B. Amr and Pins
ざっくりと大意
・半径rの中点が(x,y)にある円の円周をピンで押さえて回して中点を(x\',y\')へ移動させるのに何手かかるか??
方針のようなもの
・初期位置と目的地と1回の移動可能な最大距離を考える。
import math r,x,y,x2,y2=map(int,raw_input().split()) k=((x2-x)**2+(y2-y)**2)**0.5 print int(math.ceil(k/(r*2.0)))
**0.5とか少数になる要素をナシでやろうとしたけど計算が合わなくなって諦めた。。他の人のを参考にしてみてmath.ceil(x)を初めて使ってみた。x以上の最も小さい整数をfloat型で返すんだそうです。移動の端数は移動回数1回になるので繰り上がるような感じで使えたんだと思う。