算法基础之区间选点

区间选点

  • 核心思想: 贪心

    • 每次只看当前的最优解

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

相关推荐
小O的算法实验室14 小时前
2026年IEEE TNSE SCI2区,基于预测的双阶段分布式任务分配方法+搜救场景中最大化任务分配,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
月流霜14 小时前
Midjourney 零基础控图七大参数
人工智能·算法·midjourney
知无不研15 小时前
c++垃圾回收机制
开发语言·c++·智能指针·raii·垃圾回收机制
luckycoding15 小时前
1487. 保证文件名唯一
数据结构·算法·leetcode
DeeGLMath15 小时前
从基础算法到机器学习的研究轨迹
人工智能·算法·机器学习
Barkamin15 小时前
冒泡排序的简单实现
java·算法·排序算法
_dindong15 小时前
【单调栈/队列&并查集&字符串哈希&Tire树】习题集锦
数据结构·c++·算法·哈希算法
西装没钱买15 小时前
QT组播的建立和使用(绑定特定的网卡,绑定特定IP)
网络·c++·qt·udp·udp组播
独自破碎E15 小时前
【手撕真题】合并区间
算法
big_rabbit050215 小时前
[算法][力扣110]平衡二叉树
数据结构·算法·leetcode