算法基础之区间选点

区间选点

  • 核心思想: 贪心

    • 每次只看当前的最优解

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

相关推荐
博语小屋13 小时前
转义字符.
c语言·c++
Lhan.zzZ14 小时前
Qt跨线程网络通信:QSocketNotifier警告及解决
开发语言·c++·qt
Aevget14 小时前
QtitanDocking 如何重塑制造业桌面应用?多视图协同与专业界面布局实践
c++·qt·界面控件·ui开发·qtitandocking
我找到地球的支点啦14 小时前
Matlab系列(006) 一利用matlab保存txt文件和读取txt文件
开发语言·算法·matlab
-森屿安年-14 小时前
STL中 Map 和 Set 的模拟实现
开发语言·c++
历程里程碑14 小时前
双指针巧解LeetCode接雨水难题
java·开发语言·数据结构·c++·python·flask·排序算法
Dev7z14 小时前
基于Matlab实现GRACE卫星重力数据的全球水储量变化估算与分析
人工智能·算法·matlab
ALex_zry14 小时前
C++ 中多继承与虚函数表的内存布局解析
java·开发语言·c++
w-w0w-w14 小时前
C++构造函数与析构函数详解
c++
爱喝热水的呀哈喽14 小时前
11题目汇总
算法