//因為要求的是從上方看下來可以看到的直線
//畫一下圖可以發現能看見的是上邊的乙個下凸殼
//然後就單調棧維護一下斜率就好了
#include
#include
#include
#include
using
namespace
std;
const
int n=5e4+5
;int
n;struct
line
l[n],sta[n];
inttop;
bool
cmp1(line a,line b)
bool
cmp2(line a,line b)
double
calc(line x,line y)
intmain()
sort(l+1,l+n+1
,cmp1);
for(int i=1;i<=n;++i)
sort(sta+1,sta+top+1
,cmp2);
for(int i=1;i<=top;++i)
cout
<'';
return0;
}
1007 HNOI2008 水平可見直線
time limit 1 sec memory limit 162 mb submit 5879 solved 2238 submit status discuss 在xoy直角座標平面上有n條直線l1,l2,ln,若在y值為正無窮大處往下看,能見到li的某個子線段,則稱li為 可見的,否則li為被...
1007 HNOI2008 水平可見直線
在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 且...
1007 HNOI2008 水平可見直線
先對a排序,a相等的話就對b排序 維護乙個棧,每次取棧的頭兩個,和當前的直線相比較 如果當前的直線把頭第乙個遮蔽,就將他出棧,一直到不能遮蔽為止 include include include define maxn 500005 using namespace std intst maxn top...