算法基础之区间选点

区间选点

  • 核心思想: 贪心

    • 每次只看当前的最优解

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

相关推荐
l1t2 分钟前
Qwen 3.5plus一步做对的欧拉计划701题
算法·动态规划·欧拉计划
Book思议-6 分钟前
【数据结构实战】链表找环入口的经典问题:快慢指针法
c语言·数据结构·算法·链表
tankeven11 分钟前
HJ135 计树
c++·算法
㓗冽11 分钟前
时间转换-进阶题12
c++·算法
不知名。。。。。。。。16 分钟前
仿muduo库实现高并发---请求HttpRequest模块 响应HttpResponse模块
服务器·c++
炽烈小老头19 分钟前
【 每天学习一点算法 2026/03/19】子集
学习·算法
我能坚持多久25 分钟前
【初阶数据结构11】——链式二叉树知识补充
数据结构·算法
liuyao_xianhui36 分钟前
优选算法_两数之和_位运算_C++
java·开发语言·数据结构·c++·算法·链表·动态规划
靠沿36 分钟前
【优选算法】专题十六——BFS解决最短路径问题
redis·算法·宽度优先
博风37 分钟前
算法:双指针解:盛最多水的容器
算法·leetcode