BZOJ 1007 水平可見直線

2021-09-07 23:10:50 字數 2414 閱讀 1350

題意:給出一些直線。從y軸正方向無窮遠處向下看能看到哪些?

思路:如下圖,首先將直線按照斜率公升序排序,我們維護乙個單調的棧,棧頂top,設x(i,j)表示i和j直線交點的橫座標,那麼x(top,top-1)>=x(i,top)時top可以被top-1和i完全覆蓋。比如下圖,首先我們將1和2壓入棧中。對於3,我們發現x(2,1)>=x(3,2),那麼此時顯然2被1和3完全覆蓋;進而將3壓入棧中;對於4,x(3,1)>=x(4,3),因此3被4和1完全覆蓋,將3刪掉,壓入4。最後剩下1和4。

bzoj1007 水平可見直線

在xoy直角座標平面上有n條直線l1,l2,ln,若在y值為正無窮大處往下看,能見到li的某個子線段,則稱li為可見的,否則li為被覆蓋的.例如,對於直線 l1 y x l2 y x l3 y 0 則l1和l2是可見的,l3是被覆蓋的.給出n條直線,表示成y ax b的形式 a b 500000 且...

BZOJ1007水平可見直線 凸包

在xoy直角座標平面上有n條直線l1,l2,ln,若在y值為正無窮大處往下看,能見到li的某個子線段,則稱li為可見的,否則li為被覆蓋的.例如,對於直線 l1 y x l2 y x l3 y 0 則l1和l2是可見的,l3是被覆蓋的.給出n條直線,表示成y ax b的形式 a b 500000 且...

BZOJ1007 水平可見直線(單調棧)

在xoy直角座標平面上有n條直線l1,l2,ln,若在y值為正無窮大處往下看,能見到li的某個子線段,則稱li為 可見的,否則li為被覆蓋的.例如,對於直線 l1 y x l2 y x l3 y 0 則l1和l2是可見的,l3是被覆蓋的.給出n條直線,表示成y ax b的形式 a b 500000 ...