货舱选址问题

货舱选址问题

例题链接
在一条数轴上有 n n n 家商店,它们的坐标分别为 a 1 −   a N a_1- ~a_N a1 aN

现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。

为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。

那么先假设这个仓库地址地址在 x x x 处,此时的距离和为:
∣ a 1 − x ∣ + ∣ a 2 − x ∣ + . . . + ∣ a n − x ∣ \vert a_1-x \vert + \vert a_2 -x \vert + ...+ \vert a_n - x \vert a1x+a2x+...+anx

那么我们首先来看两个点的 ,对于两个点来说,一定有:
∣ a − x ∣ + ∣ b − x ∣ ≥ ∣ a − b ∣ \vert a-x \vert + \vert b -x \vert ≥ \vert a-b \vert ax+bxab
这个不等式画线段即可证明,其最佳的 x x x 必然落在 [ a , b ] [a,b] [a,b]

首先我们将 a i a_i ai 从小到大排好序,那么我们现在将距离和的公式按首尾结合的形式变形:
距 离 和 = { ( ∣ a 1 − x ∣ + ∣ a n − x ∣ ) + ( ∣ a 2 − x ∣ + ∣ a n − 1 − x ∣ ) + . . . ( a n + 1 2 − x ) n 为 奇 数 ( ∣ a 1 − x ∣ + ∣ a n − x ∣ ) + ( ∣ a 2 − x ∣ + ∣ a n − 1 − x ∣ ) + . . . ( ∣ a n 2 − x ∣ + ∣ a n 2 + 1 − x ∣ ) n 为 偶 数 距离和 = \begin{cases} (|a_1-x|+|a_n-x|)+(|a_2-x|+|a_{n-1}-x|)+...(a_{\frac{n+1}{2}}-x) & n为奇数 \\ (|a_1-x|+|a_n-x|)+(|a_2-x|+|a_{n-1}-x|)+... (|a_{\frac{n}{2}}-x|+|a_{\frac{n}{2}+1}-x|)& n为偶数 \end{cases} ={(a1x+anx)+(a2x+an1x)+...(a2n+1x)(a1x+anx)+(a2x+an1x)+...(a2nx+a2n+1x)nn

倘若我们每个小括号内都取最小值,那么整体将取得最小值,即:
奇数 M i n Min Min ( ∣ a 1 − a n ∣ ) + ( ∣ a 2 − a n − 1 ∣ ) + . . . 0 ( m i n ( a n + 1 2 − x ) = 0 ) (|a_1-a_n|)+(|a_2-a_{n-1}|)+...0(min(a_{\frac{n+1}{2}}-x)=0) (a1an)+(a2an1)+...0min(a2n+1x)=0
偶数 M i n Min Min ( ∣ a 1 − a n ∣ ) + ( ∣ a 2 − a n − 1 ∣ ) + . . . ( ∣ a n 2 − a n 2 + 1 ∣ ) (|a_1-a_n|)+(|a_2-a_{n-1}|)+...(|a_{\frac{n}{2}}-a_{\frac{n}{2}+1}|) (a1an)+(a2an1)+...(a2na2n+1)

那么我们能否保证取到这个最小值呢?答案是可以的,因为我们要取得每个小括号 ( ∣ a i − x ∣ + ∣ a j − x ∣ ) (|a_i-x|+|a_j-x|) (aix+ajx) 的最小值的条件就是这个 x x x 选在 [ a i , a j ] [a_i,a_j] [ai,aj] 之间,那么有没有一个 x x x 可以保证在所有的 [ a i , a j ] [a_i,a_j] [ai,aj] 之间呢?显然如果 n n n 为奇数, x x x 只能选在 a [   ] a[\ ] a[ ] 的中位数,因为此时必须还要使得 ( a n + 1 2 − x ) (a_{\frac{n+1}{2}}-x) (a2n+1x) 达到最小(0)。倘若 n n n 为偶数,选在 a [   ] a[\ ] a[ ] 的两个中位数之间(包含两个中位数)都等于最小值。这样问题就解决了。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值