区间交集
作者:互联网
题目链接:区间交集
分析:
贪心
先将每个区间按左端点从小到大排序,同时用小根堆来维护区间右端点
对于若干区间的交集的长度为这些区间的右端点的最小值 -
这些区间的左端点的最大值
代码实现
#include <bits/extc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
using namespace std;
using P = pair<int, int>;
inline void chmax(int& x, int y) { if (x < y) x = y; }
int main() {
int n, k;
cin >> n >> k;
vector<P> p;
rep(i, n) {
int a, b;
cin >> a >> b;
p.emplace_back(a, b);
}
sort(p.begin(), p.end());
priority_queue<int, vector<int>, greater<int>> q;
rep(i, k) q.push(p[i].second);
int ans = q.top() - p[k-1].first;
for (int i = k; i < n; ++i) {
q.push(p[i].second); q.pop();
chmax(ans, q.top() - p[i].first);
}
cout << ans << '\n';
return 0;
}
标签:交集,rep,cin,int,端点,区间 来源: https://www.cnblogs.com/Melville/p/16687044.html