算法基础之区间选点

区间选点

  • 核心思想: 贪心

    • 每次只看当前的最优解

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

相关推荐
ysa0510302 分钟前
二分+前缀(预处理神力2)
数据结构·c++·笔记·算法
2401_833197733 分钟前
嵌入式C++电源管理
开发语言·c++·算法
灰色小旋风7 分钟前
力扣22 括号生成(C++)
开发语言·数据结构·c++·算法·leetcode
寒月小酒8 分钟前
3.23 OJ
数据结构·c++·算法
2501_924952698 分钟前
模板编译期哈希计算
开发语言·c++·算法
xiaoye-duck11 分钟前
C++ STL map 系列深度解析:从底层原理、核心接口到实战场景
开发语言·c++·stl
2201_7586426415 分钟前
嵌入式C++开发注意事项
开发语言·c++·算法
闻哥27 分钟前
MySQL InnoDB 缓存池(Buffer Pool)详解:原理、结构与链表管理
java·数据结构·数据库·mysql·链表·缓存·面试
AI科技星28 分钟前
基于v≡c第一性原理的大统一力方程:严格推导、全维度验证与四大基本相互作用的统一
人工智能·线性代数·算法·机器学习·平面
小杍随笔29 分钟前
【Rust 语言编程知识与应用:同步机制详解】
开发语言·算法·rust