AcWing 908. 最大不相交区间数量 (区间贪心问题)

简介: 笔记

AcWing 908. 最大不相交区间数量


给定N个闭区间[ai,bi],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。


输出可选取区间的最大数量。


输入格式

第一行包含整数N,表示区间数。


接下来N 行,每行包含两个整数ai,bi,表示一个区间的两个端点。


输出格式

输出一个整数,表示可选取区间的最大数量。


数据范围

6.png

思路

①将每个区间按右端点从小到大排序


②从前往后依次枚举每个区间 如果当前区间中已经包含点,则直接pass 否则,选择当前区间的右端点


类似排节目 一个节目越早结束 一场晚会就越能表演更多的节目


代码

#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
struct Range {
  int l, r;
}range[N];
bool cmp(struct Range a, struct Range b) {
  return a.r < b.r;
}
int main() {
  int n;cin >> n;
  for (int i = 0;i < n;++i) {
    int l, r;scanf("%d%d", &l, &r);
    range[i] = { l,r };
  }
  sort(range, range + n, cmp);
  int res = 0, ed = -2e9;
  for (int i = 0;i < n;++i) {
    if (range[i].l > ed) {
      ++res;
      ed = range[i].r;
    }
  }
  cout << res << endl;
  return 0;
}


目录
相关文章
|
存储 关系型数据库 MySQL
数据库基础入门 — 数据类型
数据库基础入门 — 数据类型
154 0
|
定位技术
高德地图进阶开发实战案例(5):矩形可视范围的东北西南角经纬度的获取
高德地图进阶开发实战案例(5):矩形可视范围的东北西南角经纬度的获取
286 0
leetcode-560:和为 K 的子数组
leetcode-560:和为 K 的子数组
89 0
|
缓存 Java 数据库连接
rollback-only异常令我对事务有了新的认识(二)
rollback-only异常令我对事务有了新的认识(二)
1427 0
rollback-only异常令我对事务有了新的认识(二)
|
存储 C语言
初识C语言
初识C语言
101 0
|
存储 缓存 JavaScript
C1认证学习笔记(第三章)
C1认证学习笔记(第三章)
868 0
|
设计模式 缓存 Java
Java两大工具库:Commons和Guava(6)
除了操作集合、限流和缓存,Guava还有另一个隐秘的功能:事件总线EventBus机制——是发布-订阅模式的实现,不需要显式地注册回调——比观察者模式更灵活。
183 0
|
SQL 存储 关系型数据库
编程逻辑思维巩固案列演练
文章目录 编程逻辑思维巩固案列演练 1、项目介绍 2.环境准备 3.功能实现 1.项目主流程和菜单提示 2.数据库连接 3.添加图书 4.修改图书 5.图书列表 6.查询图书 7.删除图书 8.借阅图书 9.归还图书 python操作数据库 图书管理小项目
256 0
编程逻辑思维巩固案列演练
|
存储 安全 Java
Java从入门到精通六(java中的字符串变量String,StringBuilder,StringBuffer)
一: String 1:String的数据类型 首先我们认识到java中的数据类型分为基本数据类型和引用数据类型。基本数据类型分为数值,字符,布尔,而引用数据类型分为类,接口,数组。 String是属于引用数据类型的。因为String本身就是一个类 需要了解基本数据类型和引用数据类型的区别。基本数据类型是直接存储在内存的栈上的,引用数据类型继承自Object类,按照对象的内存模式进行存储。我们的引用存放在内存的栈上,而对于对象本身的值存放在内存的堆上。我们java中通过new出来的对象就会存放在堆中。
189 0
Java从入门到精通六(java中的字符串变量String,StringBuilder,StringBuffer)
C#编程-57:ErrorProvider控件复习
C#编程-57:ErrorProvider控件复习
229 0