题目链接:区间交集
分析:
贪心
将每个区间按左端点从小到大排序,同时用小根堆来维护区间右端点
对于若干区间的交集的长度为这些区间的右端点的最小值 -
这些区间的左端点的最大值
代码实现
#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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现