算法
(暴力枚举) O(n2)
注意到 N⩽,所以我们可以暴力 O(n^2) 通过。
为了处理方便,我们可以把所有不是闭区间的区间都统一成闭区间。
区间 [l_i, r_i] 和 [l_j, r_j] 相交 \Leftrightarrow \max(l_i, l_j) \leqslant \min(r_i, r_j)
区间 [l_i, r_i] 和 [l_j, r_j] 不相交 \Leftrightarrow r_i < l_j or r_j < l_i
C++ 代码
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
#define fi first
#define se second
using std::cin;
using std::cout;
using std::pair;
using std::vector;
int main() {
int n;
cin >> n;
vector<int> l(n), r(n);
rep(i, n) {
int t;
cin >> t >> l[i] >> r[i];
l[i] *= 2;
r[i] *= 2;
if (t >= 3) l[i]++;
if (t % 2 == 0) r[i]--;
}
int ans = 0;
rep(i, n)rep(j, i) {
if (r[i] < l[j]) continue;
if (r[j] < l[i]) continue;
++ans;
}
cout << ans << '\n';
return 0;
}