区间相关问题(贪心)

摘自紫书第八章

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值