P3430 [POI 2005] DWU-Double-row

题目描述

有 $2n$ 个士兵站成两排,他们需要被重新排列,以保证每一排里没有同样高的士兵——这样我们就说,士兵们被合理地安排了位置。 每次操作可以交换两个在同一位置(但不在同一排)的士兵。你的任务是用最少的操作来确保士兵们被合理地安排了位置。 例如:有 $18$ 个士兵站成两排,箭头标明了重新安排士兵位置的正确方式。 ![](https://cdn.luogu.org/upload/pic/14829.png) 写一个这样的程序: 读入 $n$ 与士兵的身高,以及他们最初所站的位置,确保以最小的交换(站在同一位置的不同排的士兵)的次数来合理地安排士兵的位置,输出操作数。

输入格式

第一行,一个整数 $n$($1 \le n \le 5 \times {10}^4$)。 第二行有 $n$ 个正整数 $x_1,x_2,\ldots,x_n$($1 \le x_i \le {10}^5$),表示第一行中士兵的身高。 第三行有 $n$ 个正整数 $y_1,y_2,\ldots,y_n$($1 \le y_i \le {10}^5$),表示第二行中士兵的身高。 数据保证你能够合理地安排士兵的位置(即每个数在 $2n$ 个数中最多出现两次)。

输出格式

输出一行一个正整数,表示最少需要操作的次数。 翻译贡献者UID:57699