区间分组
Posted hhyx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区间分组相关的知识,希望对你有一定的参考价值。
# 题意
N个闭区间[ai,bi],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,求最小的组数
# 题解
1.将所有区间按照左端点从小到大排序
2.从前往后处理每个区间,判断能否将其放到某个现有的组中
1.不存在这样的组开一个新的组,放入
2.存在这样的组随便挑一个将其放进去,并更新当前组的maxr
将所有分组的右端点加入小根队,每扫描一个区间的左端点,如果可以和当前右端点最小的组合并则将合并后的右端点入堆
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+10; 4 struct a{ 5 int l,r; 6 bool operator <(const a &b)const{ 7 return l<b.l; 8 } 9 }e[N]; 10 priority_queue<int,vector<int>,greater<int>>res; 11 int main(){ 12 int n; 13 scanf("%d",&n); 14 for(int i=0;i<n;i++) 15 scanf("%d%d",&e[i].l,&e[i].r); 16 sort(e,e+n); 17 for(int i=0;i<n;i++){ 18 if(res.empty()||res.top()>=e[i].l) res.push(e[i].r); 19 else{ 20 res.pop(); 21 res.push(e[i].r); 22 } 23 } 24 printf("%d ",res.size()); 25 }
以上是关于区间分组的主要内容,如果未能解决你的问题,请参考以下文章
2021-12-24:划分字母区间。 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 力扣763。某大厂面试
SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介创建消息生产者创建消息消费者自定义消息通道分组与持久化设置 RoutingKey)(代码片段