3 条题解

  • 1
    @ 2024-5-29 19:35:31

    稍微给个感性一点的证明。

    对于每一个点集 listlist ,要使某个点 p(x,y)p(x,y) , 要使曼哈顿距离最小,此时可以将二维分开看待。

    对于每个维度,如 xx ,如果他在中位数的左边,我们将 x+=1 x+=1 , 则有一半以上的曼哈顿距离 -1 ,另外不到一半的曼哈顿距离 +1,总距离是减小的。

    所以,当每个维度的坐标都是中位数的时候,曼哈顿距离是最小的。

    不是很严谨,勿喷

    n = int(input())
    x = []
    y = []
    for _ in range(n):
        x1,y1 = map(int, input().split())
        x += [x1]
        y += [y1]
    
    x = sorted(x)
    y = sorted(y)
    ans = 0
    if (n%2):
        for i in x:
            ans += abs(i-x[n//2])
        for i in y:
            ans += abs(i-y[n//2])
    else :
        for i in x:
            ans += abs(i - x[n // 2])
        for i in y:
            ans += abs(i - y[n // 2])
    
    print(ans)
    

    信息

    ID
    934
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    506
    已通过
    56
    上传者