#洛谷P2448 无尽的生命

题目描述

逝者如斯夫,不舍昼夜!

叶良辰认为,他的寿命是无限长的,而且每天都会进步。

叶良辰的生命的第一天,他有1点能力值。第二天,有2点。第n天,就有n点。也就是S[i]=i

但是调皮的小A使用时光机,告诉他第x天和第y天,就可以任意交换某两天的能力值。即S[x]<–>S[y]

小A玩啊玩,终于玩腻了。

叶良辰:小A你给我等着,我有100种办法让你生不如死。除非能在1秒钟之内告知有多少对“异常对”。也就是说,最后的能力值序列,有多少对的两天x,y,其中x<y,但是能力值S[x]>S[y]?

小A:我好怕怕啊。

于是找到了你。

对于30%的数据,x_i,y_i <= 2000

对于70%的数据, x_i,y_i <= 100000

对于100%的数据, x_i.y_i <= 2^31-1 k<=100000

逆序对裸题

由于xy这么大我们来离散化

把只要是交换过的(不管几次)都标记下来,排下序(点权为1)

没交换过的一些区间缩成一个点(点权为区间长度)

然后进行离散化操作,离散成新的段,相邻两点间下标严格递增1(还有一个就是开头没被交换的区间对答案没有影响直接扔掉)

我们离线了交换操作,这个时候就二分查找,把原来应该换哪两个点映射成现在应该换哪两个点

全换完之后就是个裸的逆序对问题,按点权建树状数组,然后统计区间和就行了。

·

//注释是做题的时候瞎写的凑合着看看吧,要说的都说了。