zoukankan      html  css  js  c++  java
  • 区间相关问题(贪心)

    摘自紫书第八章

    突破口一般是区间包含的时候怎么选, 以及怎么排序

    (1)选择不相交区间

    问题: 有n个开区间(ai, bi) 选择尽量多的区间, 使这些区间两两没有公共点。

    按照b从小到大排序(这种情况a无所谓, 得出结果一样)

    一定选第一个区间, 然后, 把所有和区间1相交的区间排除在外, 然后不相交就选下一个, 然后同理。

    所以就记录区间编号, 扫一遍就ok。

    (2)区间选点

    问题: 数轴上有n个闭区间 [ai, bi]。取尽量少的点, 使每个区间都至少有一个点。

    按照b从小到大, b同时a从大到小, 每次都取第一个区间的最后一点, 这个点不能覆盖的时候

    就再取下一个区间的最后一个点, 以此类推。

    (3) 区间覆盖

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

    预处理, 在[s,t] 外面的部分切掉(因为起不到任何作用)

    按照a从小到大排序, 区间1起点不是s无解。否则选择起点在s的最长区间

    然后新的起点就是刚才选的区间的终点bi, 然后忽略bi之前的部分, 继续做

  • 相关阅读:
    Java自学笔记(21):【IO】数据流,标准输入输出
    makefile 学习笔记
    tensorflow 环境搭建
    matlab
    【转】MATLAB各种矩阵生成函数
    leetcode刷题收获
    leetcode 15. 3Sum
    STL 记录
    leetcode 服务器环境
    visual studio 2017 使用笔记
  • 原文地址:https://www.cnblogs.com/sugewud/p/9819568.html
Copyright © 2011-2022 走看看