摘自紫书第八章
突破口一般是区间包含的时候怎么选, 以及怎么排序
(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之前的部分, 继续做