ABC 355

D. Intersecting Intervals

首先思考两个区间相交会有哪些情况:有两种左右端点包含,一种大区间包含小区间。

但是反过来思考,两个区间不相交只会有两种情况:Ri < Lj 和 Rj < Li。非常典型的逆向思考

对左右端点升序排序后,枚举右端点,找到大于它的第一个左端点,后面所有的都符合。

n 个区间选两个共 n * ( n - 1 ) / 2,减掉两两不相交的数量,就是答案。注意总数不是 n。

复制代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 5e5 + 5, INF = 1e18;

int T, n, cnt, tot, ans, l[N], r[N];

signed main()
{
	cin >> n;
	for (int i = 1; i <= n; i ++)
		cin >> l[i] >> r[i];
	sort(l + 1, l + n + 1);
	sort(r + 1, r + n + 1);
	for (int i = 1; i <= n; i ++)
	{
		int pos = upper_bound(l + 1, l + n + 1, r[i]) - l;
		tot += n - pos + 1;
	}
	ans = n * (n - 1) / 2 - tot;
	cout << ans;
	return 0;
}
相关推荐
汀、人工智能5 小时前
[特殊字符] 第66课:跳跃游戏
数据结构·算法·数据库架构·图论·bfs·跳跃游戏
汀、人工智能5 小时前
[特殊字符] 第70课:加油站
数据结构·算法·数据库架构·图论·bfs·加油站
wsoz5 小时前
Leetcode普通数组-day5、6
c++·算法·leetcode·数组
y = xⁿ5 小时前
【LeetCode】双指针:同向快慢针
算法·leetcode
啊哦呃咦唔鱼5 小时前
LeetCode hot100-105从前序与中序遍历序列构造二叉树
算法
favour_you___5 小时前
2026_4_8算法练习题
数据结构·c++·算法
汀、人工智能5 小时前
[特殊字符] 第57课:搜索旋转排序数组
数据结构·算法·数据库架构·图论·bfs·搜索旋转排序数组
倦王5 小时前
力扣日刷47
算法·leetcode·职场和发展
MicroTech20255 小时前
突破量子数据加载瓶颈,MLGO微算法科技推出面向大规模量子计算的分治态制备技术
科技·算法·量子计算
码王吴彦祖5 小时前
顶象 AC 纯算法迁移实战:从补环境到纯算的完整拆解
java·前端·算法