リスト形式でN個の座標[x,y]が与えられたとき、すべての2点間の距離の中で最長になるユークリッド距離を求めるため、以下のプログラムを書いてみました。
出力は最長距離の2乗になっています。
このプログラムではnumpyをつかって求めていますが、他に計算時間を短縮できるような良いプログラムがあればご教授いただけないでしょうか。
よろしくお願い致します。
<制約>
座標x,yは、-10 ** 5<=x,y<=10 ** 5 の範囲
与えられる座標の数 N は, 1<=N<=2*10**5 の範囲
Python3
1import numpy as np 2 3N = int(input()) 4nodes = np.array([list(map(int,input().split())) for _ in range(N)]) 5 6longest = 0 7 8nodes_diff = np.expand_dims(nodes,axis=0) - np.expand_dims(nodes,axis=1) 9nodes_diff = np.reshape(nodes_diff,(-1,2)) 10for a,b in nodes_diff: 11 distance = a**2 + b**2 12 if dist > longest: 13 longest = distance 14 15print(longest) 16

回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2022/08/23 01:58