Acwing.906 区间分组(贪心)

news2024/10/7 6:40:02

题目

给定N个闭区间[ai,bi],请你将这些区间分成若千组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。
输出最小组数。

输入格式

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

输出格式

输出一个整数,表示最小组数。

数据范围

1 ≤N≤105,
—109≤ ai≤bi≤109

  • 输入样例:
3
-1 1
2 4
3 5
  • 输出样例
2

代码

import javafx.util.Pair;

import java.util.Arrays;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Scanner;

/**
 * @author akuya
 * @create 2023-07-18-18:44
 */
public class sectionGroping {
    static int N=10010;
    static int n;
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        n=scanner.nextInt();
        Pair<Integer,Integer> p[]=new Pair[N];
        for(int i=0;i<n;i++){
            int a=scanner.nextInt();
            int b=scanner.nextInt();
            p[i]=new Pair<>(a,b);
        }

        Arrays.sort(p,0,n, new Comparator<Pair<Integer, Integer>>() {
            @Override
            public int compare(Pair<Integer, Integer> o1, Pair<Integer, Integer> o2) {
                return o1.getKey()-o2.getKey();
            }
        });

        PriorityQueue<Pair<Integer,Integer>> queue=new PriorityQueue<Pair<Integer,Integer>>(new Comparator<Pair<Integer, Integer>>() {
            @Override
            public int compare(Pair<Integer, Integer> o1, Pair<Integer, Integer> o2) {
                return o1.getValue()-o2.getValue();
            }
        });

        for(int i=0;i<n;i++){
            int l=p[i].getKey();
            if(queue.isEmpty()||queue.peek().getValue()>l){
                queue.add(new Pair(p[i].getKey(),p[i].getValue()));
            }else{
                Pair<Integer, Integer>  p2=queue.poll();
                queue.add(new Pair(p2.getKey(),p[i].getValue()));
            }
        }

        System.out.println(queue.size());

    }
}

思路

本题贪心思路如下图
在这里插入图片描述
如何实现贪心思路又是另一个难点,当然,你已经熟练掌握了优先队列的使用话,问题就迎难而解了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/767752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法基础】2.2 字典树/前缀树 Trie

文章目录 知识点cpp结构体模板 模板例题835. Trie字符串统计❤️❤️❤️❤️❤️143. 最大异或对&#x1f62d;&#x1f62d;&#x1f62d;&#x1f62d;&#x1f62d;&#xff08;Trie树的应用&#xff09; 相关题目练习208. 实现 Trie (前缀树)1804. 实现 Trie &#xff08;…

轮转数组——左旋数组,右旋数组

题目链接&#xff1a;力扣 左旋转字符串&#xff1a;【1234567】—左旋3下—>【4567123】 反转区间为前n的子串【3214567】反转区间为n到末尾的子串【3217654】反转整个字符串【4567123】 右旋转字符串&#xff1a;【1234567】—右旋3下—>【5671234】 反转整个字符…

一图看懂 pandas 模块(1):提供高性能、易用的数据结构和数据分析工具,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 pandas 模块&#xff1a;提供高性能、易用的数据结构和数据分析工具&#xff0c;资料整理笔记&#xff08;大全&#xff09; &#x1f9ca;摘要&#x1f9ca;模块图&#x…

SAP-MM-物料版次

业务背景介绍 UF公司其产成品会根据客户需求进行细节上零件变更,每次都需新增物料主数据以及搭建新的BOM和对应的工艺路线进行数据处理(即对客户A0001的产成品从A0010到B0010的变化,但物料描述还是原来的描述) 新增物料编号进行库存管控是较为合理的需求,但是因UF销售业务员…

在LLM的支持下使游戏NPC具有记忆化的方法

问题 使用GPT这样的LLM去处理游戏中的NPC和玩家的对话是个很好的点子&#xff0c;那么如何处理记忆化的问题呢。 因为LLM的输入tokens是有限制的&#xff0c;所以伴随着问题的记忆context是有窗口大小限制的&#xff0c;将所有的记忆输入LLM并不现实。 所以这里看到了stanfo…

Damiler EDI 项目 Excel 方案开源介绍

准备下载和运行 Daimler EDI 到 Excel 使用 Excel 生成一系列 EDI 文档与 Daimler 通信。 下载工作流 下载示例文件 Daimler EDI & Excel 方案简介 本文将继续分享Daimler示例工作流&#xff1a;使用Excel端口和Email端口生成一系列文件&#xff0c;完成与Daimler的…

解锁编程世界的魔法密码:探索算法的奥秘与应用

一个程序员一生中可能会邂逅各种各样的算法&#xff0c;但总有那么几种&#xff0c;是作为一个程序员一定会遇见且大概率需要掌握的算法。今天就来聊聊这些十分重要的“必抓&#xff01;”算法吧~* 一&#xff1a;引言 算法是解决问题和优化程序性能的核心&#xff0c;它是一…

Redis实战案例20-优化秒杀(一人一单)

查询优惠券判断秒杀库存&#xff1b;查询订单&#xff1b;校验一人一单&#xff1b;减库存、创建订单&#xff1b; 以上均为串行操作&#xff0c;执行效率不高&#xff0c;在高并发的场景下性能很一般 问题引出&#xff1a;如何在Redis中完成秒杀判断和校验一人一单的问题&…

【LeetCode热题100】打卡第39天:数组中第K个最大元素最大正方形

文章目录 【LeetCode热题100】打卡第39天&#xff1a;数组中第K个最大元素&最大正方形⛅前言 数组中的第K个最大元素&#x1f512;题目&#x1f511;题解 最大正方形&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第39天&#xff1a;数组中第K个最大元素&…

若依(Ruoyi)前后端分离版项目部署到服务器(Linux环境)后,刷新页面报错:404 Not Found

原文章:若依(ruoyi)前后端分离版使用教程之若依后端部署阿里云服务器步骤(超详细)_蓝多多的小仓库的博客-CSDN博客 问题: 在若依项目部署服务器后,可以正常运行,但如果执行刷新页面操作,便会出现404 Not Found。 原因: Nginx未正确配置。由于后台路由采用History模式…

软件测试银行项目面试过程

今天参加了一场比较正式的面试&#xff0c;汇丰银行的视频面试。在这里把面试的流程记录一下&#xff0c;结果还不确定&#xff0c;但是面试也是自我学习和成长的过程&#xff0c;所以记录下来大家也可以互相探讨一下。 请你做一下自我介绍&#xff1f;&#xff08;汇丰要求英…

【JAVA】为char所提供包装类——Character类

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言Character 类装箱(boxing)拆箱(unboxing)转义序列Java的转义序列实例Character 方法isDigit()isLetter()isWhitespace()toUpperCase()toLowerCase()compareTo()isAlphabetic…

《线程池的执行流程》

目录 什么是线程池 线程池的优点 线程池的执行流程 线程池的状态 什么是线程池 线程池是一种多线程处理形式&#xff0c;内部维护了若干个线程。 没有线程任务的时候&#xff0c;线程都处于空闲状态。如果有新的线程任务&#xff0c;就分配给空闲线程执行。如果所有线程都…

【算法与数据结构】144、145、94LeetCode二叉树的前中后遍历(递归法、迭代法)

文章目录 一、题目二、递归算法三、迭代算法四、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、递归算法 思路分析&#xff1a;这道题比较简单&#xff0c;不多说了&#xff0c;大家直接看代码就行。注意前中后…

家具商城小程序:连接优质家居产品的桥梁

随着人们对家居生活品质的追求&#xff0c;家具商城小程序成为提供便捷购物和个性化服务的不可或缺的工具&#xff0c;通过家具商城小程序&#xff0c;用户可以浏览并购买各类家具产品&#xff0c;如沙发、床、桌子等。同时&#xff0c;家具商城小程序还提供个性化的推荐、客户…

【实战篇】docker-compose部署go项目

一、场景&#xff1a; 二、需求 三、实操 Stage 1&#xff1a;GoLand 中 build 生成二进制文件 Stage 2&#xff1a;编写 Dockerfile Stage 3&#xff1a;编写 docker-compose.yaml Stage 4&#xff1a;文件上传到 ubuntu 服务器上 Stage 5&#xff1a;运行 docker-comp…

uni-app做h5IOS底部tabbar高度在不同的tabbar页面会忽高忽低

原因不祥&#xff0c;解决办法的话在App.vue中 <style langscss> //每个页面公共css page { height:100vh; } </style>

word 2019无法打开邮箱下载的docx文档

我通过如下设置&#xff0c;打开了文档&#xff1a; 开始——选型——信任中心——信任中心设置&#xff0c;如下图 2.把宏设置改一下&#xff0c;如下图 3.把受保护的视图设置一下&#xff0c;如下图 3.文件阻止设置为默认&#xff0c;我没有改&#xff0c;如下图 结束了…

Android平台GB28181设备接入端语音广播技术探究和填坑指南

技术背景 GB/T28181-2016官方规范和交互流程&#xff0c;我们不再赘述。 SIP服务器发起广播流程示意图如下&#xff1a; 需要注意的是&#xff1a;语音广播通知、语音广播应答命令 消息头 Content-type字段为 Content-type:Application/MANSCDPxml。 语音广播通知、语音广播…

vue写车牌号 自定义键盘

vue写车牌号自定义键盘 <template><div><div class"content-wrapper"><div class"content-top-wrapper"><van-radio-group v-model"radioCarType"><van-radio name"1">蓝牌<imgslot"icon…