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;
}
相关推荐
写代码的小球3 小时前
求模运算符c
算法
大千AI助手6 小时前
DTW模版匹配:弹性对齐的时间序列相似度度量算法
人工智能·算法·机器学习·数据挖掘·模版匹配·dtw模版匹配
YuTaoShao8 小时前
【LeetCode 热题 100】48. 旋转图像——转置+水平翻转
java·算法·leetcode·职场和发展
生态遥感监测笔记8 小时前
GEE利用已有土地利用数据选取样本点并进行分类
人工智能·算法·机器学习·分类·数据挖掘
Tony沈哲8 小时前
macOS 上为 Compose Desktop 构建跨架构图像处理 dylib:OpenCV + libraw + libheif 实践指南
opencv·算法
刘海东刘海东9 小时前
结构型智能科技的关键可行性——信息型智能向结构型智能的转变(修改提纲)
人工智能·算法·机器学习
pumpkin845149 小时前
Rust 调用 C 函数的 FFI
c语言·算法·rust
挺菜的9 小时前
【算法刷题记录(简单题)003】统计大写字母个数(java代码实现)
java·数据结构·算法
mit6.8249 小时前
7.6 优先队列| dijkstra | hash | rust
算法