day 19 贪心

115 阅读1分钟
  1. 贪心
    1. 概念:每一步都尽量选择局部最优解来求取最终最优解。
    2. 贪心算法的基本思路:
      1. 初始化一个空的解集合(或部分解)。
      2. 不断地进行选择,每次选择当前看起来最优的解决方案,并将其添加到解集合中。
      3. 如果该解决方案导致问题无法继续向下求解,则回退到之前的状态,尝试其他选择。
      4. 重复步骤2和步骤3,直到找到问题的全局最优解或满足特定条件。

在某些情况下,贪心算法可能会得到次优解或不正确的解

区间选点:给定N个闭区间[ai,bia_i,b_i],要求在数轴上选尽可能少的点,使得每个区间至少含一个点。问最少选多少个点。

基本思路:

  1. 按照右端点从小到大对每个区间进行排序。
  2. 从前往后遍历区间,将 end 的值初始化为负无穷小。
  3. 如果当前区间无法覆盖前一个区间的右端点(即 ed < range[i].l),则需要选择一个新的点。此时结果 res 值加一,并更新 end 为当前区间的右端点(即 ed = range[i].r)。

实现:

code.png