题意简述
给定两个数列 a , b a,b a,b,长度均为 n ( < = 100000 ) n(<=100000) n(<=100000), a , b a,b a,b中的数都互不相同。最小化每个数差的平方的和,形式化地,最小化:
然后输出交换次数对 99999997 99999997 99999997取膜的结果。
思路框架
显然,最优的时候就是 a , b a,b a,b都排好序的时候,那么我们把 a , b a,b a,b离散化,都看成 1 , n 1,n 1,n的排列,然后算 b b b需要多少步到 a a a。是一个类似逆序对的问题,用树状数组维护即珂。
具体思路
先化简一下那个式子。把平方拆开,会发现变成三个部分:
- a i 2 a_i^2 ai2的和
- b i 2 b_i^2 bi2的和
- − 2 a i b i -2a_ib_i −2aibi的和
要让原式最小,那就要让 a i b i a_ib_i aibi的和最大。如何最大呢?那肯定是要排序之后一一对应。
but…Why?
只考虑 n = 2 n=2 n=