这题主要是题面 不知道为什么会有两个版本。
// [x,y] 某种颜色编号i 只能放在一个区间内。。
// 且i之间不能冲突。。。
贴份代码。。这题大部分都写的很乱。。我看题解。
`
include <bits/stdc++.h>
using namespace std;
define int long long
define ll __int128_t
define ar array<int, 2>
define arr array<int, 3>
int n, m, k, inf = 1LL << 61, mod = 998244353;// 1e9+7;
const int N = 5e5 + 50;
void solve() {
cin >> n;
vector
for (auto&[x, y] : a)
cin >> x >> y, y += x + 1;
a.push_back({inf, inf});
sort(a.begin(), a.end());
int t = 0, ans = 0;
priority_queue<int, vector
auto pop = & {//这边封装一个清理无效区间的小函数 会让下面的主体逻辑更加清晰。
while (q.size() && q.top() <= t)q.pop();
// 就是y已经<=t了。。那么这个区间就已经放不了了。。。
// 相当于是清理无效的区间。。
};
for (auto[x, y] : a) {
pop();//清理下。
while (t < x && q.size() && q.top() > t) {
q.pop(); t++, ans++;
pop();
}
t = max(t, x);
q.push(y);
}
cout << ans;
};
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout << fixed << setprecision(15);
ifdef DEBUG
freopen("../1.in", "r", stdin);
endif
//init_f();
//init();
//expr();
// int T; cin >> T; while(T--)
solve();
return 0;
}
`