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

君はまるで砂漠に咲く、一輪の花。

僕はその花に引き寄せられる蝶。

Codeforces Round #367 (Div.2)

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

A. Beru-taxi

ざっくりと大意

・Vasiliyは座標a,bにいる。タクシーは座標x,yにいて速度vで移動してくる。最速でいつタクシーが使えるか??

Python2

IS=float('inf')
def euclid_dis(x1,y1,x2,y2): return ((x1-x2)**2+(y1-y2)**2)**0.5

ans=chk=IS
a,b=map(int,raw_input().split())
n=int(raw_input())
for i in range(n):
    x,y,v=map(int,raw_input().split())
    chk=euclid_dis(a,b,x,y)
    ans=min(ans,chk/v)
print '{0:.10f}'.format(ans)

タクシーとのユークリッド距離と速度vの商を比較して最小のものを出力すれば大丈夫だと思う。

B. Interesting drink

ざっくりと大意

・Vasiliyは"Beecola"を愛している。"Beecola"はn箇所の店でそれぞれでの単価は\(x_i\)である。
・q日間のそれぞれの日の予算は\(m_i\)である。予算で購入可能なお店は何軒あるか??

Python2

import bisect

n=int(raw_input())
x=map(int,raw_input().split())
x.sort()
q=int(raw_input())
for i in range(q):
    m=int(raw_input())
    print bisect.bisect_right(x,m)

コンテスト当時はbisect使う発想がなかったのでTLEで終わってた。購入可能なお店をq日分のクエリでn箇所のお店を毎回全比較は無理でTLEだった。sortしておいてbisect_rightでより左側にある値の個数が定まるのでそれが購入可能なお店軒数になる。