Gym-103855M Short Question
Gym-103855M Short Question
tag: 排序,切比雪夫距离
给定两个长度为 \(N\) 的整数序列 \(p\) 和 \(q\),求:
\[\sum_{i=1}^N\sum_{j=1}^N\min\{|p_i-p_j|,|q_i-q_j|\}. \]\(1\le N\le10^6\),\(1\le p_i,q_i\le10^6\)。
由于 \(\min\{a,b\}=a+b-\max\{a,b\}\),而 \(\max\{|p_i-p_j|,|q_i-q_j|\}\) 为点 \((p_i,q_i)\) 和点 \((p_j,q_j)\) 的 Chebyshev 距离。
一个 结论 是,将坐标系中的点 \((x,y)\) 变为 \(\left(\dfrac{x+y}2,\dfrac{x-y}2\right)\),则新坐标系中的 Manhattan 距离即为原坐标系中的 Chebyshev 距离。
令 \(x_i=\dfrac{p_i+q_i}2,y_i=\dfrac{p_i-q_i}2\),则
考虑如何求出 \(calc(p)=\displaystyle\sum_{i=1}^N\sum_{j=1}^N|p_i-p_j|\)。将 \(p\) 按从小到大排序,并规定 \(i<j\),从而把绝对值符号去掉,变为 \(2\displaystyle\sum_{i=1}^N\sum_{j=i+1}^N(p_j-p_i)\)。
考虑每个 \(p_k\) 的贡献,作为 \(j\) 被加了 \(k-1\) 次,作为 \(i\) 被减了 \(N-k\) 次,故答案变为 \(2\displaystyle\sum_{k=1}^N(2k-1-N)p_k\)。
故答案为 \(calc(p)+calc(q)-calc(x)-calc(y)\)。
为了防止出现小数,实现时先令 \(x'=2x,y'=2y\),则 \(calc(x)=\dfrac12calc(x'),calc(y)=\dfrac12calc(y')\)。

浙公网安备 33010602011771号