$\mathtt{Solution}$

• 第一个部分是，使得 $\sum_{i=1}^n(a_i-b_i)^2$ 最小化的顺序是什么？
• 第二个部分是，调整到这种顺序最少需要多少步

$\mathcal{Part 1}$

\begin{aligned} & \sum_{i=1}^n(a_i-b_i)^2 \\ = & \sum_{i=1}^n({a_i} ^ 2 -2a_ib_i+ {b_i} ^ 2) \\ = & \sum_{i=1}^n{a_i} ^ 2 -\sum_{i=1}^n2a_ib_i + \sum_{i=1}^n{b_i} ^ 2 \\ = & \sum_{i=1}^n{a_i} ^ 2 + \sum_{i=1}^n{b_i} ^ 2 - 2\sum_{i=1}^na_ib_i \end{aligned}

$\mathcal{Part2}$

• 记录每个火柴（数字）的编号地位。（编号指之前在这个序列的第几号，地位指是这个序列的第几小的）（此处可以用结构体实现，待会code实现就明白了）
• 定义一个新数组 $q$，规定下标为 A火柴中地位为 $i$ 的编号 的值为B火柴中地位为 $i$ 的编号。那么 $q$ 数组中的逆序对数量就是答案

2 3 1 4
3 2 1 4


2 3 1 4 -> 1 2 3 4 -> 原编号：3 1 2 4
3 2 1 4 -> 1 2 3 4 -> 原编号：3 2 1 4

q[a[1].num] = b[1].num -> q[3] = 3
q[a[2].num] = b[2].num -> q[1] = 2
q[a[3].num] = b[3].num -> q[2] = 1
q[a[4].num] = b[4].num -> q[4] = 4

q数组的值分别为：2 1 3 4

q数组中共有1个逆序对（2， 1）



$i < j, a_i > a_j$

https://www.luogu.com.cn/problem/P1908

$\mathtt{Code}$

/*
* @Author: crab-in-the-northeast
* @Date: 2020-11-01 17:04:02
*/
#include <iostream>
#include <cstdio>
#include <algorithm>

const int maxn = 100005;
const int mod = (int)1e8 - 3;

struct match {
int height;
int num;
const bool operator < (match &b) {
return this -> height < b.height;
}
}a[maxn], b[maxn];

long long ans = 0;
int q[maxn], tmp[maxn];

void merge_sort(int l, int r) {
if (l == r)
return ;
int mid = l + r >> 1;
merge_sort(l, mid);
merge_sort(mid + 1, r);

int i = l, j = mid + 1, k = l;
while (i <= mid && j <= r) {
if (q[i] <= q[j])
tmp[k++] = q[i++];
else {
tmp[k++] = q[j++];
ans = (ans - i + mid + 1) % mod;
}
}

while (i <= mid)
tmp[k++] = q[i++];
while (j <= r)
tmp[k++] = q[j++];

for (int i = l; i <= r; ++i)
q[i] = tmp[i];
return ;
}

int main() {
int n;
std :: scanf("%d", &n);
for (int i = 1; i <= n; ++i)
std :: scanf("%d", &a[i].height);
for (int i = 1; i <= n; ++i)
std :: scanf("%d", &b[i].height);
for (int i = 1; i <= n; ++i)
a[i].num = b[i].num = i;

std :: sort(a + 1, a + 1 + n);
std :: sort(b + 1, b + 1 + n);
for (int i = 1; i <= n; ++i)
q[a[i].num] = b[i].num;
merge_sort(1, n);
std :: printf("%lld\n", ans);
return 0;
}


$\mathtt{More}$

posted @ 2020-11-02 19:39  东北小蟹蟹  阅读(65)  评论(0编辑  收藏