算法基础之区间选点

区间选点

  • 核心思想: 贪心

    • 每次只看当前的最优解

      • 将所有区间按右端点排序 从小到大遍历所有区间
      • 为了覆盖更多区间 取右端点作为选点
      • 若两区间互相没有交集 则再取点
    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;
      }

相关推荐
知无不研1 分钟前
共享内存(Shared Memory)深度全解:Linux高性能IPC的核心机制与实战
linux·运维·c++·共享内存·共享内存与互斥锁
nananaij3 分钟前
【LeetCode-03 判断根结点是否等于子结点之和 python解法】
python·算法·leetcode
超级大只老咪5 分钟前
差分算法(java)
算法
逆境不可逃7 分钟前
【从零入门23种设计模式21】行为型之空对象模式
java·开发语言·数据库·算法·设计模式·职场和发展
超级大只老咪10 分钟前
输入(java)
算法
jing-ya12 分钟前
day51 图论part3
数据结构·算法·深度优先·图论
AI浩24 分钟前
UTPTrack:迈向简单统一的视觉跟踪令牌剪枝
算法·机器学习·剪枝
feng_you_ying_li24 分钟前
stack的实现,queue的实现,deque的介绍和priority_queue的实现以及仿函数的介绍与运用
c++
nananaij33 分钟前
【LeetCode-02 最小偶倍数 python解法】
python·算法·leetcode
倾心琴心33 分钟前
【agent辅助pcb routing coding学习】实践4 kicad pcb 核心类层次关系
算法·agent·pcb·eda·routing