算法基础之区间选点

区间选点

  • 核心思想: 贪心

    • 每次只看当前的最优解

      • 将所有区间按右端点排序 从小到大遍历所有区间
      • 为了覆盖更多区间 取右端点作为选点
      • 若两区间互相没有交集 则再取点
    cpp 复制代码
      #include<iostream>
      #include<algorithm>
      
      using namespace std;
      const int N = 100010;
      
      int n;
      struct Range{
          int l,r;
          bool operator< (const Range &W)const{  //重载<
              return r < W.r;
          }
      }range[N];
      
      int main()
      {
          cin>>n;
          for(int i=0;i<n;i++)
          {
              int l,r;
              cin>>l>>r;
              range[i] = {l,r};
              // cin >> range[i].l >> range[i].r; 也可以
          }
          
          sort(range,range+n);
          
          int res = 0,ed = -2e9;  //res为点个数 ed为当前选点的下标
          for(int i=0;i<n;i++)  //遍历所有区间
          {
              if(range[i].l > ed)  //左端点大于上一次取的右端点
              {
                  ed = range[i].r;  //更新右端点
                  res ++;  //个数+1
              }
          }
          
          cout<<res;
      }

相关推荐
heimeiyingwang12 小时前
【架构实战】分布式ID生成方案:雪花算法与业务ID设计
分布式·算法·架构
RuiZN12 小时前
UE5 蓝图 FPS 01 Event Tick
c++·ue5
A charmer13 小时前
零基础学OC:变量与基本数据类型(C++开发者速通版)[特殊字符]
开发语言·c++·objective-c
SoftLipaRZC13 小时前
C语言字符完全指南:字符函数与字符串函数
c语言·开发语言·算法
墨白曦煜13 小时前
算法实战笔记:链表的底层逻辑与指针的高阶玩法(二)
笔记·算法·链表
wuweijianlove13 小时前
算法复杂度评估的实验统计方法与可视化的技术7
算法
名不经传的养虾人13 小时前
从0到1:企业级AI项目迭代日记 Vol.35|追问比演示重要——技术团队问出的五个工程缺口
人工智能·算法·机器学习·ai编程·ai工作流·企业ai
01_ice13 小时前
C语言复杂度
数据结构
zavoryn13 小时前
大模型入门:面试必会 RoPE,从位置编码到旋转位置嵌入
算法·面试
楼田莉子13 小时前
C++20现代特性:概念与约束
开发语言·c++·后端·学习·c++20