BZOJ1007 水平可见直线 (单调栈 直线判交)
题目大意给出n条直线,表示成y=Ax+B的形式(|A|,|B|<=500000),且n条直线两两不重合.求出所有可见的直线。可见的定义为从y为无穷大的地方往下看可见,既未被其他直线完全覆盖。题解把所有的直线按k递增为第一关键字,b递减为第二关键字排序。因为所有可见的直线一定能组成一个类似下凸的形状。然后逐个压入栈中,压栈之前把这条直线能覆盖的直线都弹出,既只要这条直线与sta[top-1]的交点在s
原创
2017-04-07 08:42:52 ·
663 阅读 ·
0 评论