Codeforces Round #280 (Div. 2)
はい。
http://codeforces.com/contest/492
A. Vanya and Cubes
ざっくりと大意
・n個のキューブで最も高く作れるピラミッドは何段か???
・ピラミッドの1段目は1キューブ、2段目は1+2で3キューブで合計でが4キューブ使ってる。3段目は1+2+3で6キューブで合計では10キューブ使ってる。
方針のようなもの
・1段ずつ増やしていく。
n=int(raw_input()) w=t=r=0 while w<n: t+=1 r+=t w+=r print t if w==n else t-1
加算する式を書くだけで凄い苦戦した。。。使うキューブの数nは0でないことが保証されている。tでいま何段目かを数えて1から段目までの総和がその段だけで使っているキューブの数rになる。全ての段の確認ごとにrをwに加算することで全段の合計で何個のキューブを使っているかがwで分かる。加算を続けていてwとnがぴったり同じになることがあったらその段目は作れるのでtを出力、wがnより大きくなったらwとnの差分が足りずにその段目を実は作れないのでt-1を出力。
B. Vanya and Lanterns
ざっくりと大意
・長さがlの道路の\(a_i\)の箇所にn個の照明がある。道路を隈なく照らすのにはどれくらいの幅が照らせればよいか??
方針のようなもの
・照明の区間で長いトコを探す。
n,l=map(int,raw_input().split()) a=map(int,raw_input().split()) a.sort() ans=max(a[0],l-a[-1]) for i in range(n-1): ans=max(ans,(a[i+1]-a[i])/2.0) print ans
照明の設置場所をソートして、端まで照らすのに左側は最小値は0との差分が必要、右側は最大値とlとの差分が必要。中間にある照明は隣との距離を2で割った幅でその区間を照らすことが出来る。ソートして端側の処理を間違えなければ多分大丈夫。