贪心算法——区间选点与最大不相交区间数

简介: 贪心算法——区间选点与最大不相交区间数

AcWing 905. 区间选点


1.题目


给定 N 个闭区间 [ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。

输出选择的点的最小数量。


位于区间端点上的点也算作区间内。


输入格式


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

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


输出格式


输出一个整数,表示所需的点的最小数量。


数据范围


1≤N≤10的5次,

−10的9次≤ai≤bi≤10的9次


输入样例:

3

-1 1

2 4

3 5

输出样例:

2

AcWing 905. 区间选点


2.思路


import java.util.Arrays;
import java.util.Scanner;
public class Main {
    static int N=100010;
    static int [][]he=new int[N][2];
    public static void main(String[] args)  {
       Scanner sc=new Scanner(System.in);
       int n=sc.nextInt();
        for (int i = 0; i < n; i++) {
            he[i][0]=sc.nextInt();
            he[i][1]=sc.nextInt();
        }
        //按左端点大小冒泡排序
        Arrays.sort(he,0,n,(a,b)->(a[0]-b[0]));
        //从最左边的区间开始依次遍历,这个点是否包含在下一个区间,不含则要增加一个点并更新
        int l=he[0][0];
        int r=he[0][1];
        int res=1;
        for (int i = 1; i < n; i++) {
            if(he[i][0] >r){
                res++;
                l=he[i][0];
                r=he[i][1];
            }else r=Math.min(r,he[i][1]);
        }
        System.out.println(res);
    }
}


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



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


最大不相交区间数==最少覆盖区间点数


因为如果几个区间能被同一个点覆盖

说明他们相交了

所以有几个点就是有几个不相交区间


感谢你能看完,如果对你有帮助的话,点个赞支持下

相关文章
|
7月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1 算法训练 区间k大数查询
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1 算法训练 区间k大数查询
41 0
|
2月前
|
算法
❤️算法笔记❤️-(每日一刷-160、相交链表)
❤️算法笔记❤️-(每日一刷-160、相交链表)
18 1
|
4月前
|
算法 C++ Windows
空间射线与三角形相交算法的两种实现
空间射线与三角形相交算法的两种实现
42 0
|
6月前
|
存储 SQL 算法
高效日程管理:利用区间合并算法优化活动安排【python LeetCode57】
高效日程管理:利用区间合并算法优化活动安排【python LeetCode57】
|
6月前
|
存储 算法 搜索推荐
掌握区间合并:解决实际问题的算法策略和应用案例【python LeetCode题目56】
掌握区间合并:解决实际问题的算法策略和应用案例【python LeetCode题目56】
|
6月前
|
算法
基于仿射区间的分布式三相不对称配电网潮流算法matlab仿真
```markdown # 摘要 本课题聚焦于基于仿射区间的分布式三相配电网潮流算法在MATLAB2022a中的仿真。算法利用仿射运算处理三相不平衡情况及分布式电源注入,旨在提供比区间算法更精确的不确定区域。仿真结果展示了算法优势。核心程序设计考虑了PQ、PV及PI节点,将不同类型的节点转换统一处理,以适应含分布式电源的配电网潮流计算需求。 ``` 这个摘要以Markdown格式呈现,总字符数为233,满足了240字符以内的要求。
|
6月前
|
算法 Java
Java数据结构与算法:用于处理不相交集合的合并和查找问题
Java数据结构与算法:用于处理不相交集合的合并和查找问题
|
6月前
|
算法 C语言
【数据结构与算法 经典例题】相交链表求交点
【数据结构与算法 经典例题】相交链表求交点
|
7月前
|
算法 C++
c++算法学习笔记 (12) 区间合并
c++算法学习笔记 (12) 区间合并
|
7月前
|
存储 机器学习/深度学习 人工智能
【算法基础】基础算法(三)--(双指针算法、位运算、离散化、区间合并)
【算法基础】基础算法(三)--(双指针算法、位运算、离散化、区间合并)