fzukzh @ 2023-02-15 16:11:21
m,n=map(int,input().split())
m_lst=list(map(int,input().split()))
n_lst=list(map(int,input().split()))
m_lst.sort()
n_lst.sort()
w=0
for i in n_lst:
s=20000000000
for j in m_lst:
if abs(i-j)<s:
s=abs(i-j)
else:
break
w+=s
print(w)
by 初雪_matt @ 2023-02-15 16:36:26
@fzukzh 没有,多半是逻辑错了
by 初雪_matt @ 2023-02-15 16:40:15
@fzukzh
m,n=map(int,input().split())
m_lst=list(map(int,input().split()))
n_lst=list(map(int,input().split()))
m_lst.sort()
n_lst.sort()
w=0
for i in n_lst:
s=20000000000
for j in m_lst:
if abs(i-j)<s:
s=abs(i-j)
w+=s
print(w)
显然你没有理由直接break掉判断,你的判断永远在第一个人成立。
by 初雪_matt @ 2023-02-15 16:41:17
另外,此题正解为二分答案或贪心等,您的方法时间复杂度过高。
by fzukzh @ 2023-02-15 16:57:53
@初雪_matt 好的我再去改改