Codeforces Round #280 (Div. 2)
はい。 -----(0/0) 1089(0)
夜中は頭がぼけてないつもりでも相当ぼけてたようで分かりやすい問題の回だったのに逃してしまったので結構悔しい。。。
http://codeforces.com/contest/492
A. Vanya and Cubes
ざっくりと大意
・1段ならキューブ1つ、2段なら上の段が1つと次の段が1+2で3つのキューブ、3段なら上段が1つで中段が1+2で3つのキューブで下段が1+2+3で6つのキューブを使う。
・n個のキューブで何段のピラミッドが作れるか。
方針のようなもの
・今は何段目で、今の段は何個のキューブが必要か、今まで合計で何個使ってるかを丁寧に計算する。
n=int(raw_input()) ans,chk,cnt=0,0,1 while 1: chk+=cnt ans+=chk if ans==n: print cnt break elif ans>n: print cnt-1 break cnt+=1
キューブを1段ずつシミュレートしてコレまで使ったキューブの個数とnがぴったり一致すればその段目を出力、nより少なかった次の段でnより大きくなったらその段はn個のキューブで作れない段なので-1して出力する。
同室ならHack成功できるチャンスだった群
http://codeforces.com/contest/492/submission/8912670
AC率も高いしHackで狙うポイントはよくわからないけど、丁寧に計算してなさそうで自分のコードと両方試して出力が違ったら試す感じかな。
B. Vanya and Lanterns
ざっくりと大意
・長さがlの通りにn個の灯りをそれぞれ\(a_i\)の箇所に設置。
・通りを隈なく明るくするのに必要な灯りの幅はいくつか??
・サンプル2は2個の灯りで長さ5の通り、2と5の箇所に灯りを設置なら灯りの幅は2で2の箇所の灯りで[0,4]を明るくして5の箇所では[3,5]を明るくする。3,4が重複した区間になるが幅が2でなければ2の箇所に設置で0まで灯りが届かない。
方針のようなもの
・灯りの幅が広い区間を探して計算する。
n,l=map(int,raw_input().split()) a=map(int,raw_input().split()) a.sort() chk=max(min(a)*2,(l-max(a))*2) for i in range(1,n): chk=max(chk,a[i]-a[i-1]) print chk*1.0/2
灯りと灯りの間が幅4なら幅2で明るくすることが出来るが、通りの端っこと灯りの間が幅4ならば灯りも幅4必要になるのを忘れないこと。
同室ならHack成功できるチャンスだった群
http://codeforces.com/contest/492/submission/8919724
http://codeforces.com/contest/492/submission/8915468
長さlの通りに0basedでlまでなので配列やリストの最後尾の処理ミスとか狙い目だったかもしれない。