pku2902 Intercepting Missiles 线段树+离散化+二分图匹配,注意C++短路

题意:
有b个炸弹,p个飞机,平行于x轴飞行,地面部署了m个导弹,只能垂直打。知道0时刻炸弹、飞机的坐标,以及导弹的坐标以及炸弹、导弹、飞机的速度,问不打到飞机的情况下最多能拦截多少导弹?
给力条件:炸弹被导弹击中后,继续飞行,而导弹立刻消失。飞行物高度均不同
有个注意点:注意C++中的短路问题,慎用两个函数相或、与,可能因此一个函数得不到执行,这个在线段树里是很麻烦的。宁可多写一步

解法:
上次比赛这题死都A不掉,今天重新做了下,1A。。
首先,看到这题肯定想到二分图的匹配模型。这个不细说,说下之前的处理。
首先,按照飞行物高度排序,然后枚举导弹i能否打到j个炸弹,计算该导弹打到每个飞行物的时间区间,看区间有没有被完全覆盖即可判断。这里用到线段树。然后就是可恶的精度问题,其实,这题完全能够避免精度误差,将所有坐标预先乘以三种速度的最小公倍数,然后离散化再用线段树来统计就没问题了。区间处理还要注意一点就是处理成左闭右开区间,用[s*2,e*2-1)即可。

代码:

posted on 2011-01-31 18:35 yzhw 阅读(228) 评论(0)  编辑 收藏 引用 所属分类: graphdata struct


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2010年11月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

公告

统计系统

留言簿(1)

随笔分类(227)

文章分类(2)

OJ

最新随笔

搜索

积分与排名

最新评论

阅读排行榜