今天注定是不能补掉了,先把理解到的思路写一些。
一、题意
有一个无限长的序列{1, 2, 3, 4, ...}。现在给出n个操作,每个操作由a[i]和b[i]构成,表示第a[i]个数将和第b[i]个数交换位置。n不超过1e5,a[i]和b[i]不超过1e9。求操作后产生的逆序对总数。
二、思路
从官方题解(见E题部分)里面看了个大概,是将问题区分成两个部分。
可以知道,如果两个数都没有经历过操作,那么他们一定不会构成逆序对。于是构成逆序对的情况就可以分成这两种:1.构成逆序对的两个数都经过操作;2.构成逆序对的两个数一个经过操作、另一个没有经过,保留在原位置。
对于第一种情况,我们把操作中出现过的数离散化之后,利用求逆序对的常规方法即可求出(归并或树状数组,然而我现在不会树状数组了,可能归并也不一定敲得出来了。归并这个非常感谢许轲出在了算法期末考试里,让我会了这个方法)。
对于第二种情况,明天再写。