ZOJ3953 ZJU2017校赛(贪心)

题意:给出n个区间,求至少删掉多少个区间使得不存在区间a, b, c 两两相交    (定义两个区间相交是,区间[l1, r1]和区间[l2, r2]相交,当且仅当存在一个数x,l1<=x<=r1 且 l2<=x<=r2)

   输入第一行为T,表示测试数据组数

   接下来一行为n,1 <= n <= 50000

   接下来n行表示n个区间li,ri,1 <= li <= ri <= 10^9

   数据保证所有n的和不超过500000

   输出第一行为删掉区间个数m,接下来一行为删去区间的序号(升序输出),如果m为0,接下来一行输出空行

分析:类似那种经典的问题一样

   将边按照左端点升序排序,然后依次考虑

   我们发现只要考虑当前边和last边以及lastlast边的情况

   但如果分类讨论会十分繁琐

   有一个巧妙的规律,就是如果三条边两两重合,那么删除的一定是右端点最大的那条边!如果三条边两两不重合,那么右端点大的两个边成为last lastlast

   所以只需要每次对3个排下序就ok了,不需要写很多if

转载于:https://www.cnblogs.com/wmrv587/p/6696621.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值