题目链接:区间交集
分析:
贪心
先将每个区间按左端点从小到大排序,同时用小根堆来维护区间右端点
对于若干区间的交集的长度为这些区间的右端点的最小值 -
这些区间的左端点的最大值
代码实现
#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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。