zoukankan      html  css  js  c++  java
  • 关于区间的贪心问题

    关于区间的贪心问题

    选择不相交区间

    数轴上有n个开区间,选择尽量多个区间,使得这些区间两两没有公共点。

    首先,若有两个区间x和y,区间x完全包含y,那么肯定不用选择x,因为选择y冲突更少,却和x的价值相同。

    接下来,按照右端点从小到大给区间排序。有两个贪心策略:第一个是——一定要选择第一个区间,这是显然的,因为右端点在最前面区间是最优的。第二个是要尽可能选择右端点在更左边的区间。

    简单来说,就是在区间数目相同时让右端点尽可能小。

    区间选点问题

    数轴上有n个闭区间,取尽量少的点,使得每个区间内都至少有一个点。

    一样,把所有区间按右端点从大到小排序。先来考虑第一个区间里,应该把点放在哪个位置。显然是放在最后更好~~一个一个区间的扫下去,如果发现有一个区间上没有点了,就说明必须要放点了,同样把点放在最后的位置,以此类推直到结束。

    区间覆盖问题

    数轴上有n个闭区间,选择尽量少的区间覆盖一条指定线段[s, t]。

    首先应当进行一次预处理,每个区间在线段外的部分都应该预先被剪掉,因为它们的存在是没有意义的。

    这一次应该将个区间按照a从小到大排序。如果区间1的起点不是s,则无解。否则应选择从起点开始的最长区间(这也是贪心),然后忽略所有区间在被选择区间右端点以左的部分,再次开始选择。

    简单来说,就是寻找在已经覆盖的区间中出发,最远能到达的位置。

  • 相关阅读:
    Java System.getProperty vs System.getenv
    Bring JavaScript to your Java enterprise with Vert.x
    es4x 引用外部jar 包以及集成typescrip
    cube.js 最近的一些更新
    es4x 调用其他三方jar 包
    graalvm native image 试用
    es4x 使用nodejs 开发vertx 应用框架试用
    clojure 环境搭建
    restql 学习三 查询语言简单说明
    restql 学习二 几种查询模式
  • 原文地址:https://www.cnblogs.com/MyNameIsPc/p/8496802.html
Copyright © 2011-2022 走看看