3 条题解
-
2
中位数
n = int(input()) # 输入上班族人数 n X = [] # 用于存放所有上班族的工作地点横坐标 Y = [] # 用于存放所有上班族的工作地点纵坐标 # 读取所有上班族的工作地点坐标,并添加到X和Y列表中 for i in range(n): x, y = map(int, input().split()) X.append(x) Y.append(y) # 对X和Y列表进行排序,以便后续计算中位数 X = sorted(X) Y = sorted(Y) # 计算X和Y的中位数 # 当n是奇数时,中位数为中间的一个点 # 当n是偶数时,任何位于两个中间点之间的点作为最优点都会有相同的距离和, # 用索引 n//2 可以直接获取中位位置的值 medianX = X[n // 2] medianY = Y[n // 2] # 使用中位数计算所有点到中位数的距离和 # 这是因为曼哈顿距离在一维中以中位数为最优聚集点 dist_sum = sum(abs(i - medianX) for i in X) + sum(abs(i - medianY) for i in Y) print(dist_sum) # 输出最小的距离和
信息
- ID
- 934
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 506
- 已通过
- 56
- 上传者