3.27网易互联网算法第二题(AC)
mark 一下🤣
#闭环内追击问题,同速不相遇,异速度一定相遇 #知道三点位置坐标,知道初始位置和速度 import math xa,ya,xb,yb,xc,yc = [0,23,0,3,100,0] v1,d1 = [2,1] v2,d2 = [1,1] #print(d1 ^ d2) # 写函数求欧式距离 def dis(x1,x2,y1,y2): return math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)) #print(dis(xa,xc,ya,yc)) abdis = dis(xa,xb,ya,yb) acdis = dis(xa,xc,ya,yc) bcdis = dis(xb,xc,yb,yc) if v1 == v2 == 0: print(-1) else: #有速度 if d1 ^ d2: #如果两个相向,一定相遇,异或为1 if d1 == 0: t = abdis / (v1 + v2) print(t) #样例通过 else: t = (acdis + bcdis) / (v1 + v2) print(t) else: #两人同向,AB点开始的追赶问题 if v1 == v2: print(-1) elif v1 > v2: #小明追小红 if d1 == 0: #A-B-C t = abdis / (v1 - v2) print(t) else: #A-c-B t = (acdis + bcdis) / (v1 - v2) print(t) else: #小红追小明 if d1 == 0: #A-B-C t = (acdis + bcdis) / (v2 - v1) print(t) else: #A-c-B t = abdis / (v2 - v1) print(t)