传送门:烧壁
知识点
离散化或差分找规律
主要是想考察离散化,但隐藏了一些性质
题目大意:
给定n个区间[l_i,r_i]进行涂色,求最后涂色的区间长度(不是点的长度)。
其中 1 ≤ n ≤ 2 × 1 0 4 , − 2 31 ≤ l i , r i ≤ 2 31 1 \leq n\leq 2 \times 10^4,-2^{31}\leq l_i ,r_i \leq 2^{31} 1≤n≤2×104,−231≤li,ri≤231
题目解读与分析
之所以给这么大的区间范围说白了就是不打算让你枚举,但是我们又观察到原轴上的节点数其实
至多有 N < < 1 N<<1 N<<1个,所以本题符合数量少,数值大且满足单调性的特点,我们考虑离散化进行缩点。
就会将区间范围缩成 [ 1 , 4 × 1 0 4 ] [1,4 \times 10^4] [1,4×104]这下就可以 O ( n ) O(n) O(n)枚举了。
总复杂度 T = O ( n 2 ) T = O(n ^ 2) T=O(n2)
参考代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 2e4 + 10;
int n,x[N],y[N];
long long c<