题意简述
(bzoj,十分简洁,直接蒯来了)
给定长度为2N的序列,1~N各处现过2次,i第一次出现位置记为ai,第二次记为bi,求满足ai<aj<bi<bj的对数
n<=1e5。
思路
相当于有$n$个区间$a_i,b_i$,求相交的区间对数。
那么我们把它转化为,对于每个$a_i,b_i$,统计区间里面包含多少其它区间的左端点或右端点,而它的另一个端点不能出现在$[a_i,b_i]$中。
那么能否直接求包含的端点数呢?可以!我们把区间按长度从大到小排序,那么已经考虑的区间肯定比当前的区间长,不珂能出现两个端点同时在里面的情况。然后直接用树状数组统计端点数即珂。
代码
1 |
|