贪心的几个经典题型

1.     选择不想交区间问题

设点为(ai,bi)

这样的题我们首先需要初始化  先把bi按从小到大的顺序排序

然后就可以分成两种情况

①   a1 > a2那么区间2就包含了区间1如果选了区间2肯定是不合适的 所有这样的情况我们只能选区间1

②  a1 < a2 < a3 如果区间1和区间2没有相交  那么我们两个都可以选  因为没有影响  然后循环计算就可以了 

但是如果区间2和区间1有相交的部分那么我们一定选区间1 因为区间二的b比区间1的大  对后面的区间的影响可能大一些

2.   区间选点问题

数轴上有n个闭区间(ai,bi)取尽量少的点,使得每个区间至少有一个点

受上面题的启发 我们这次也先把区间做一个初始化 把bi从小到大进行排序,如果出现包含的情况我们只考虑小区间就可以了

如果b相同的话我们把a小的排在前面    然后选取这个区间的最后一个点进行贪心 ,如果这个点在下一个区间内 那我们就考虑

下一个区间里面是否也包含这个店  这样一直循环就行

3.  区间覆盖问题

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

这题的预处理比较麻烦些  我们首先要将[s,t],以外的部分删除因为这些点毫无意义

然后我们把a进行从小到大的顺序排序,如果a1>s无解,

如果有解  那么我们就选择s开始长度较大的区间,然后把这个区间的b当做起点

重复进行上面说的步骤就可以了



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值