区间相关问题(贪心)

摘自紫书第八章

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

(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之前的部分, 继续做


猜你喜欢

转载自blog.csdn.net/qq_34416123/article/details/80227956