AcWing 906. 区间分组

题解:AcWing 906 区间分组 等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。,请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。输出一个整数,表示最小组数。,表示一个区间的两个端点。行,每行包含两个整数。本文分享的必刷题目是从。 阅读详情

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

输出最小组数。

输入格式

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

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

输出格式

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

数据范围

1≤N≤10^5,
−109≤ai≤bi≤10^9

输入样例:

3
-1 1
2 4
3 5

输出样例:

2

算法思想:

维护每组的最大右端点,新来的右端点与每组比大小,打了更新该组,小了新开一组,使用小根堆来维护最小组的值。

注:如果使用数组会导致超时。

超时代码!

import java.io.*;
import java.lang.*;
import java.util.*;

class Main{
    
    static int n = 0, N = 100010;
    static int[] groups = new int[N];
    static int group = 0;
    public static void main(String[] args)throws Exception{
        BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.valueOf(buf.readLine());
        int[][] nums = new int[n][2];
        int t = 0;
        while(n-- != 0){
            String[] info = buf.readLine().split(" ");
            int a = Integer.valueOf(info[0]);
            int b = Integer.valueOf(info[1]);
            nums[t][0] = a;
            nums[t][1] = b;
            t++;
        }
        Arrays.fill(groups, -0x3f3f3f3f);
        Arrays.sort(nums, (a,b)->{return a[0] - b[0];});//排序
        for(int i = 0; i < t; ++i){
            boolean flag = false;
            for(int j = 0; j <= group; ++j){
                if(nums[i][0] > groups[j]){
                    flag = true;
                    groups[j] = nums[i][1];
                    break;
                }
            }
            if(!flag)groups[++group] = nums[i][1];
        }
        
        System.out.print(group + 1);
        
    }
}

小根堆优化代码!


import java.io.*;
import java.lang.*;
import java.util.*;

class Main{
    
    static int n = 0, N = 100010;
    static PriorityQueue<Integer> qu = new PriorityQueue<>();
    public static void main(String[] args)throws Exception{
        BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.valueOf(buf.readLine());
        int[][] nums = new int[n][2];
        int t = 0;
        while(n-- != 0){
            String[] info = buf.readLine().split(" ");
            int a = Integer.valueOf(info[0]);
            int b = Integer.valueOf(info[1]);
            nums[t][0] = a;
            nums[t][1] = b;
            t++;
        }
        Arrays.sort(nums, (a,b)->{return a[0] - b[0];});//排序
        for(int i = 0; i < t; ++i){
            if(qu.isEmpty() || qu.peek() >= nums[i][0]){
                qu.offer(nums[i][1]);
            }else if(qu.peek() < nums[i][0]){
                qu.poll();
                qu.offer(nums[i][1]);
            }
        }
        System.out.print(qu.size());
        
    }
}

 

Claude Code 接入 DeepSeek-V4 教程 本文介绍Claude Code的安装配置流程:1) 安装Node.js 18+和Git(Windows);2) 通过npm全局安装@anthropic-ai/claude-code;3) 配置DeepSeek API环境变量(需替换API Key);4) 启动Claude Code或配置VSCode插件。重点包括Linux/macOS和Windows的环境变量设置方法,以及VSCode插件的settings.json配置项。完成配置后即可在终端或VSCode中使用Claude Code功能。 阅读详情

相关推荐

多模态模型评测神器 | OpenCompass MMBench 了解一下!

MMBench 是 OpenCompass 研究团队自建的视觉语言模型评测数据集,可实现从感知到认知能力逐级细分评估。研究团队从互联网公开信息与权威基准数据集采集约 3000 道单项选择题 ,覆盖目标检测、文字识别、动作识别、图像理解、关系推理等 20 个细粒度评估维度。

OpenCompass的博客 7826

4007. 非零段划分 思维 unique

【代码】4007. 非零段划分 思维 unique。

2303_79132118的博客 252

Cisco 路由器 打环测试教程

环 回测试是很常用的一种测试,通常用于检查和分析端口或线路问题。如下图所示,我们在设备端口上用命令loopback(某些端口上命令格式为 loopback diagnostic)使接口从内部将自己发送的信号转接到自己的接收端(如红线所示),通过检查数据发送和接收的情况来判断端口工作状态是否正常。如果 需要对端口进行完全的检测,可以使用符合标准的短跳线将端口收发短接构成环...

weixin_34304013的博客 2024

AcWing 906 区间分组

题目描述: 给定N个闭区间[ai,bi],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。 输出最小组数。 输入格式 第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。 输出格式 输出一个整数,表示最小组数。 数据范围 1≤N≤10^5, −10^9≤ai≤bi≤10^9 输入样例: 3...

昂昂累世士的博客 923

用MATLAB从零实现六足机器人步态仿真:交替三角与波动步态保姆级教程

本文详细介绍了如何使用MATLAB从零实现六足机器人的两种经典步态仿真:交替三角支撑步态和波动步态。通过参数定义、相位设置、运动轨迹生成和三维可视化等步骤,帮助读者掌握六足机器人步态规划的核心技术。教程包含完整代码和详细解析,适合机器人爱好者和相关专业学生学习实践。

weixin_26765363的博客 229

40-Type-C电路设计

Type-C电路设计

weixin_66510961的博客 9655

AcWing 906. 区间分组 (区间贪心问题)

AcWing 906. 区间分组 给定NNN个闭区间[ai,bi][ai,bi][ai,bi],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。 输出最小组数。 输入格式 第一行包含整数NNN,表示区间数。 接下来N行,每行包含两个整数ai,biai,biai,bi,表示一个区间的两个端点。 输出格式 输出一个整数,表示最小组数。 数据范围 1≤N≤1051 \leq N \leq 10^{5}1≤N≤105 −109≤ai≤bi≤109-10^{9} \leq

zzqwtc的博客 3002

UVM和System verilog笔记总结(四)

virtual sequence 即虚seq,用于管理多个实sequence的执行顺序。 下面有三个sequence,此时需要virtual sequence去管理这三个的顺序。 virtual sequence和virtual sequencer需要成对写,使用例化实的sequence和sequencer控制: 此时在virtual sequence里面启动,而不是之前在test.sv里面用default或start函数启动。具体方法如下:先例化 再启动,用 `uvm_do_on 实sequence

weixin_42655118的博客 642

区间问题 AcWing 906. 区间分组

区间问题 AcWing 906. 区间分组

T_Y_F_的博客 166

FineReport实战-- 国内外各地区销售数据分析 多个图表联动

进行国内外各地区业务员销售数据分析是一项复杂但极具价值的任务,它可以帮助企业了解不同市场的表现,并据此调整销售策略以提高整体绩效。实现功能:同一个报表里面多个图表联动问题。

Davina_yu的博客 1200

Autosar代码包初识 2 - 如何编译Vector包内Demo工程

Vetcor autosar代码包Demo工程编译,GreenHills,RH850,Autosar,Davinci COnfigurator

weixin_42412049的博客 5186

ACWing 906. 区间分组

ACWing 906. 区间分组

qq_63094959的博客 163

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

AcWing906区间分组

AcWing906区间分组 代码: #include<bits/stdc++.h> using namespace std; const int maxn=1e5+110; struct Node { int l,r; bool operator<(const Node &W)const { return l<W.l; } }q[maxn]; int main() { int n;scanf("%d",&n); for(int i=1;i<=n

Helinshan的博客 216

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

AcWing906 区间分组(区间贪心、优先队列)

题目:AcWing906 区间分组 题解目录前言一、题目陈述二、解决思路1.区间贪心的整体思路2.如何快速判断一个区间能否加入到已经存在的某一个组三、代码实现总结 前言 区间贪心问题解法正确的证明方法:为了证明真实解ans=解法求得的解cnt,可以利用两边夹逼的思想(证明ans<=cnt同时证明ans>=cnt),这两个条件前一个靠定义证明,后一个靠构造极限情况证明。 一、题目陈述 这道题目对应的实际场景可能是,将一群同学分组去旅游,但是其中有一些人有过节,不能分到同一组,所以我们要在考虑这

codertea的博客 338

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【题解-Acwing】906. 区间分组

,请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。接下来 N 行,每行包含两个整数 a。第一行包含整数 N,表示区间数。输出一个整数,表示最小组数。,表示一个区间的两个端点。给定 N 个闭区间 [a。

写代码的犄角旮瘩 358

AcWing 906 区间分组 题解(贪心—区间问题)

#include<iostream> #include<algorithm> #include<queue> using namespace std; const int N = 1e5; struct Range{//利用结构体储存区间 int l, r; bool operator< (const Range &W) const { return l < W.l; } }range[N]; int main() { int n

qiaodxs的博客 224

【贪心】AcWing 906. 区间分组

区间分组

lele_ne的博客 1637

AcWing 906. 区间分组 (贪心)

这两天累死了,准备结课的各种考试和项目。 题目 这道贪心的题目,是这么个意思 所以答案是三,就是同一个区间不能有重复的元素,包括端点。 考虑排序左端点后用优先队列表示每个区间,最后输出优先队列大小即可。 另外我要再看一下排序器的用法, 时间长了不用又要忘了。 这里给出AcWing一位同学的题解,表达能力比我好很多: 算法分析 1、将所有区间按左端点从小到大排序 2、从前往后枚举每个区间,判断能否...

SoKeeGan 378

Acwing 906. 区间分组

Acwing 906. 区间分组

白泓的博客 264

AcWing 区间问题——906. 区间分组

我们可以把所有开始时间和结束时间排序,遇到开始时间就把需要的教室加1,遇到结束时间就把需要的教室减1,在一系列需要的教室个数变化的过程中,峰值就是多同时进行的活动数,也是我们至少需要的教室数。需要注意的是当出现[1,3]、[3,4]这种情况时,3==3,我们一定要让[3,4]中的3排序后比[1,3]靠前,因为这种情况最少需要2个教室。有若干个活动,每个活动有其开始时间和结束时间,同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室?大家可以把这个问题想象成活动安排问题。

a131529的博客 388

AcWing 906. 区间分组_贪心

题目链接:https://www.acwing.com/problem/content/908/ 解题思路: 首先对每个区间按照左端点从小到大排序,然后使用一个优先队列去存储每一个组中的最右边的端点的下标,这样就有: 注意点: 1.这里如果是自己手写一个数组然后二分的化反而会超时,不如直接使用优先队列 AC代码: #include <iostream> #include <cs...

phacpf123 187
上一篇: AcWing 908. 最大不相交区间数量(贪心:同区间选点)
下一篇: AcWing 907. 区间覆盖(区间贪心)
AARM
博客等级 码龄10年 10粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值