結果
問題 | No.2909 Imaginary Summer |
ユーザー | 👑 p-adic |
提出日時 | 2024-09-29 10:06:30 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,212 bytes |
コンパイル時間 | 485 ms |
コンパイル使用メモリ | 82,268 KB |
実行使用メモリ | 137,128 KB |
最終ジャッジ日時 | 2024-10-02 17:48:11 |
合計ジャッジ時間 | 90,897 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 5,046 ms
77,696 KB |
testcase_01 | AC | 5,044 ms
77,600 KB |
testcase_02 | AC | 5,044 ms
78,244 KB |
testcase_03 | AC | 5,046 ms
78,192 KB |
testcase_04 | AC | 5,043 ms
77,900 KB |
testcase_05 | AC | 5,044 ms
77,660 KB |
testcase_06 | AC | 5,050 ms
77,952 KB |
testcase_07 | AC | 5,044 ms
77,916 KB |
testcase_08 | AC | 5,044 ms
78,332 KB |
testcase_09 | WA | - |
testcase_10 | AC | 5,258 ms
130,836 KB |
testcase_11 | AC | 5,172 ms
130,772 KB |
testcase_12 | WA | - |
testcase_13 | AC | 5,177 ms
134,228 KB |
testcase_14 | AC | 5,152 ms
131,204 KB |
testcase_15 | TLE | - |
testcase_16 | -- | - |
testcase_17 | -- | - |
testcase_18 | -- | - |
testcase_19 | -- | - |
testcase_20 | -- | - |
testcase_21 | -- | - |
testcase_22 | -- | - |
testcase_23 | -- | - |
testcase_24 | -- | - |
testcase_25 | -- | - |
testcase_26 | -- | - |
testcase_27 | -- | - |
testcase_28 | -- | - |
testcase_29 | -- | - |
testcase_30 | -- | - |
testcase_31 | -- | - |
testcase_32 | -- | - |
testcase_33 | -- | - |
testcase_34 | -- | - |
testcase_35 | -- | - |
testcase_36 | -- | - |
testcase_37 | -- | - |
testcase_38 | -- | - |
testcase_39 | -- | - |
ソースコード
R=range import time import random import math def TwoDimensionalAllSmallestWeightRandomised(d2,S,T,bucket_size,time_bound): S_size = len(S); T_size = len(T) if S_size == 0:return[] assert( T_size > 0 ) answer = [9**18]*S_size line = [0]*T_size now = time.time() time_bound /= 1000 while time.time() - now < time_bound: theta = random.randint( -1000 , 1000 ) * 0.00314 dx = math.cos( theta ) ; dy = math.sin( theta ) for j in R(T_size):line[j] = [ T[j][0] * dx + T[j][1] * dy , j ] line.sort() for i in R(S_size): proj_i = S[i][0] * dx + S[i][1] * dy l , r = 0 , T_size while l + 1 < r: m = ( l + r ) >> 1 if proj_i < line[m][0]:r = m else:l = m j_min = max( 0 , l - bucket_size ) j_ulim = min( T_size , l + bucket_size ) answer[i] = min( answer[i] , min( d2( S[i] , T[line[j][1]] ) for j in R(j_min,j_ulim) ) ) return answer def d2(u,v):return (u[0]-v[0])**2+(u[1]-v[1])**2 J=lambda:list(map(int,input().split())) N,M,K=J() N+=1 XY=[J()for i in R(N)] AB=[J()for k in R(K)] d=min(d2(XY[0],XY[i])for i in R(1,N))**0.5 ann=TwoDimensionalAllSmallestWeightRandomised(d2,AB,XY,100,5000) answer=sum(min(d2(XY[0],AB[k])**0.5,d+ann[k]**0.5)for k in R(K)) print(answer*2)