Atcoder Biginner Contest 224 C問題についての質問です。問題は以下です。
https://atcoder.jp/contests/abc224/tasks/abc224_c
私の回答方針は3点の全ての組み合わせを求め、それぞれの辺の長さを求めます。そして三角形の成立条件であるA+B>CかつA+C>BかつB+C>Aとなればcountを+1するというものです。下のコードを提出すると不正解及びTLE(実行時間超過)となってしまいます。
解説(https://atcoder.jp/contests/abc224/editorial/2810)を見ると全ての組み合わせを実行することは問題ないそうです(この辺はまだわかっていません)。おそらくTLEとなってしまうことはnormの計算やif文での演算部によって超過してしまうのではないかと考えています。
また、方針自体は異なっていても成立条件は誤っていないはずなのでTLEとなることはあったとしても不正解となることの原因がわかりません。私自身の見解ですが、有効数字によって辺の少しの差の条件が通っていないのではないかと考えています。
以上の2つの点(なぜTLE、WAとなるのか)に関して、何か考えられる原因がありましたら教えていただきたいです。
・提出コード
Python3
1import itertools 2import numpy as np 3 4N = int(input()) 5coor = [] 6for _ in range(N): 7 coor.append(list(map(int,input().split()))) 8 9count = 0 10for v in itertools.combinations(range(N),3): 11 a = np.array(coor[v[0]]) 12 b = np.array(coor[v[1]]) 13 c = np.array(coor[v[2]]) 14 #print(a,b,c) 15 ab = np.linalg.norm(a-b) 16 ac = np.linalg.norm(a-c) 17 bc = np.linalg.norm(b-c) 18 #print(ab,bc,ac) 19 if ab+ac>bc and ab+bc>ac and ac+bc>ab: 20 count += 1 21print(count)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。