带权中位数 学习笔记

博客探讨了不带权和带权中位数问题,从线性模型出发,证明了在不同情况下如何选择使距离总和最小的点。对于带权情况,将问题转化为寻找权值一半的点,通过不断缩小范围找到最优解。该问题在信息学竞赛中有广泛应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【线性模型】

(一)不带权中位数 

在一条直线上给出若干点,要求求出直线上的一点使其他所有点到这个点的距离之和最小。

我们会发现按照这些点的坐标排序了之后,答案即为最中间的那个点(若中间有两个点则两个点均可)。怎样来证明呢?

首先证明所求点一定可以表示为给出点中的一个


设所求的点的坐标为x,设所有L左边的人走到L的距离总和为A,所有R右边的人走到R的距离总和为B,那么易知:

若A>B,要使x-L尽可能的小,那么x应与L重合;

若A<B,要是R-x尽可能的下,那么x应与R重合;

若A=B,x在区间[A,B]内任何点对答案均无影响。

得出:x一定可以用一个已知点表示。

由此也可得出,如果点数为偶数,选取最中间的两个点都为最小值。

接着证明x点为按横坐标排序后的中点


容易知道:x一定在任意两点之间。

只看L,R,x这三个点,如果x在LR之间,那么LR到x的距离之和即为LR两点的距离;如果x在LR之外,那么距离值和一定大于LR的距离,也就是说不可能再优。同理可知,x必须在任意两点之间,又由上面已证的结论知道,x即为最中间的一点或两点。

(二)带权中位数

接着上面的题目,如果每个人都有一个权值,它们移动到一点的花费为距离与权值的乘积,那么这个时候怎么选点使总花费最小呢?

其实权值就可以看成是这个点上总的人数,仍然要找所有人的中点。那么这个问题就转化为了按坐标排序后,从一段扫描,把扫描过的点的权值相加记为sum。一旦遇到了一个点加上之后sum大于了总权值的一半,那么这个点就是所求的点。

也给出另外一种证明

我们可以简单地把上面的证明过程看作是左边的人都集合到了M点,而右边的人都集合到了M+1点。此时形成了两军对垒的形式,如果左边的总人数比右边的多,那么从左边走到右边去就没有从右边走到左边来优,反之亦然。那么既然在当前点我们左边的总人数已经比右边多了,那么再往右边移动,左边的人数会进一步增多,而右边的人会减少,那么只会导致更差的结果,所以此时我们可以判断最优点一定在当前点的左边,或者至少在当前这个点。那么范围就从当前的[L,R]缩小到了[L,M],通过不断地缩小范围(而每一次缩小我们都砍掉了一半的范围),最后我们得到的将是一个点——那就是我们要求的集合位置。

下面是百度上的数学证明方法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值