[???] 带权中位数
好像是某道CF问题的变形, 记一下.
题目描述
有若干的排列在一条直线上的点\(p_i\), 每个点上有\(a_i\)个人, 找出一个点, 使得所有人移动带这个人的位置上的总距离最小.
结论. 从左到右累加人数, 寻找刚刚过半的人数.
证明. (扰动法) 若\(\sum_{i=1}^{x-1}<\sum a_i /2\), \(\sum_{i=1}^{x}\geq\sum a_i /2\), 这个\(x\)就是要求的. 假设所有人集合到\(p_x\)走的总距离是\(A\), 记作\(D(x)\).
考虑$$D(x-1)=\sum_{i=1}^{x-1}a_i\times|p_x-p_{x-1}| + \sum_{i=x}^{n}a_i\times|p_x-p_{x-1}|.$$
由于左边的人数小于一半, 这样调整之后的人数只会增加. 所以会更劣.
同理可证右半边.
拓展1.
如果每个人还有一个等待时间.
结论. 把每个人拆成两个, 一个左边, 一个右边, 转化为原来的情况.
拓展2.
要求移动距离的平方和最小.
不妨设所有的点到\(x\)的平方和是\(D(x)\). 那么$$D(x)=\sum_{i=1}^n a_i \times(p_i-p_x)^2.$$ 我们考察\(D(x)\)和\(D(x+1)\)之间的差值, 来判别两者之间的差距.
同理$$D(x+1)=\sum_{i=1}^n a_i (p_i-p_{i+1})^2. $$
因此差值就是
\[\begin{align*}
D(x+1)-D(x)&=\sum_{i=1}^n a_i \times(p_i-p_x)^2 - \sum_{i=1}^n a_i (p_i-p_{i+1})^2\\
&=\sum_{i=1}^n a_i ({p_i^2}+p_{x+1}^2-2p_ip_{x+1}{-p_i^2}+p_{x}^2-2p_ip_x)\\
&=(p_{x+1}^2-p_x^2)\sum_{i=1}^n a_i + (p_x-p_{x+1})\sum_{i=1}^n 2p_ia_i
\end{align*}
\]