首页 > 其他 > 详细

3.区间分组 区间问题

时间:2020-08-21 16:09:48      阅读:65      评论:0      收藏:0      [点我收藏+]

技术分享图片

 技术分享图片

 技术分享图片

 用堆来维护每个组的max_r

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N = 100010;
 4 struct Range {
 5     int l, r;
 6 } range[N];
 7 bool cmp(Range r1, Range r2) {
 8     return r1.l < r2.l;
 9 }
10 int main() {
11     int n;
12     cin >> n;
13     for (int i = 0; i < n; i++) {
14         cin >> range[i].l >> range[i].r;
15     }
16     sort(range, range + n, cmp);
17     priority_queue<int, vector<int>, greater<int>> heap;
18     for (int i = 0; i < n; i++) {
19         Range t = range[i];
20         if (!heap.size() || heap.top() >= t.l) { //需要开一个新的组
21             heap.push(t.r); 
22         } else { //放进这个组里,更新max_r
23             heap.pop();
24             heap.push(t.r);
25         }
26     }
27     cout << heap.size() << endl;
28     return 0;
29 }

 

3.区间分组 区间问题

原文:https://www.cnblogs.com/fx1998/p/13460216.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!