Luogu P1966

题意简化

给定两个数组 \(a,b\),求让 \(\sum{(a_i-b_i)^2}\) 尽可能小所需要的最小交换次数

分析

首先,拆解题目给出的公式(完全平方)

\(\sum{(a_i-b_i)^2}=\sum {{a_i}^2+{b_i}^2-2a_ib_i}\)

可以发现,\(\sum{{a_i}^2+{b_i}^2}\) 是不会变的,那我们只能从 \(\sum 2a_ib_i\) 入手,让它尽可能大,答案就会尽可能小

那么易得,只要让大数和大数相乘,小数和小数相乘,\(a_i b_i\) 就会最大

所以只要将 \(a,b\) 排序就能得到最终序列

问题是我们求的是交换次数

那我们分析一下,其实要求的就是逆序对数量

使用树状数组即可

posted @ 2025-10-04 21:01  KK_SpongeBob  阅读(13)  评论(0)    收藏  举报