给定 n 个区间,每个区间表示为 [li,ri],计算有多少对不同的区间满足这两个区间有交集。
这道题要求计算所有区间对中有交集的数目,我们可以将其转化为总对数减去不相交的对数。具体做法是:首先将所有区间按左端点升序排序,然后利用离散化和树状数组高效统计每个区间之前有多少区间的右端点小于当前区间的左端点(即不相交的情况),最后用组合数公式计算总对数并减去不相交对数得到答案。
对于给定的n个区间,我们使用一个二元组{li.,ri}来描述第i个区间覆盖[li,ri](包含端点)。
现在,请计算有多少对不同的区间[lu,ru]和[lv,rv](u=v)使得这两个区间有交集,即满足
min(ru,re)≥max(lu,lv,)
第一行输入一个整数n(1≦n≦105)代表给定的区间数量。
此后n行,第i行输入两个整数
li,ri(0≦li≦ri≦109)代表第i个区间的左右端点。
输出一个整数,表示满足条件的区间对的数量。
输入
5
1 3
2 4
5 7
6 8
1 2
输出
4
在这个样例中,满足条件的区间对有:
因此,输出结果为4。