1007: [HNOI2008]水平可见直线

Description

在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),且n条直线两两不重合.求出所有可见的直线.

Input

第一行为N(0 < N < 50000),接下来的N行输入Ai,Bi

Output

从小到大输出可见直线的编号,两两中间用空格隔开,最后一个数字后面也必须有个空格

Sample Input

3
-1 0
1 0
0 0

Sample Output

1 2

HINT

题解:

当前直线与相对他斜率次大和次次大的2条直线时,如果与次大的(或者次次大)的交点在次大与次次大的交点左边,那么次大的直线一定被覆盖掉了!

画图自己看!(其实也就是这三个点形成一个凸包,然后上凸包的边所在直线一定看得到,下凸包一定被覆盖!)

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+, M = , mod = 1e9 + , inf = 0x3f3f3f3f;
typedef long long ll;
#define eps 1e-8 struct line{double a,b;int index;}l[N],seg[N];
bool bo[N];
int top = , n ;
int cmp (line x,line y) {
if(fabs(x.a-y.a)<=eps) return x.b<y.b;
return x.a<y.a;
}
double crossx(line x,line y) {
return (y.b-x.b) / (x.a-y.a);
}
void inserts(line x) {
while(top) {
if(fabs(seg[top].a - x.a)<=eps) top--;
else if(top>&&crossx(x,seg[top-])<=crossx(seg[top],seg[top-]))
top--;
else break;
}
seg[++top] = x;
}
void solve() {
sort(l+,l+n+,cmp);
for(int i=;i<=n;i++) inserts(l[i]);
for(int i=;i<=top;i++) bo[seg[i].index] = true;
for(int i=;i<=n;i++)
if(bo[i]) printf("%d ",i);
printf("\n");
}
int main() {
scanf("%d",&n);
for(int i=;i<=n;i++) {
scanf("%lf%lf",&l[i].a,&l[i].b);
l[i].index = i;
}
solve();
}

最新文章

  1. [Mahout] 完整部署过程
  2. objccn-iOS上的相机捕捉
  3. Orchard分类Taxonomies图文教程
  4. 20145223 《Java程序程序设计》实验报告4
  5. 单片机TM4C123学习(九):PWM
  6. linux文件和目录基本操作
  7. 55人班37人进清华北大的金牌教师之32条教育建言! z
  8. STL之auto_ptr
  9. 从零开始学习前端开发 — 15、CSS3过渡、动画
  10. 10分钟入门spark
  11. Java虚拟机学习笔记——JVM垃圾回收机制
  12. C++ 11 创建和使用共享 weak_ptr
  13. 随机获得id的方法
  14. solr window环境安装配置和管理页面基本使用
  15. OpenJ_Bailian 4017 爬楼梯
  16. OneAPM大讲堂 | Metrics, Tracing 和 Logging 的关系
  17. 《Metasploit渗透测试魔鬼训练营》第一章读书笔记
  18. UVA10341 Solve It
  19. hdu 4861
  20. mac 下搭建 php + apache + mysql 服务器(cool)

热门文章

  1. .NET开源的背后:是无奈,还是顺应潮流?
  2. 解决 Eclipse 导入项目后 Maven Dependencies missing jar 问题
  3. 利用CSS3中的clac()实现按照屏幕分辨率自适应宽度
  4. Swagger中添加Token验证
  5. Memcache相关面试题
  6. c/s winform打包和部署
  7. js数组定义、属性及方法(push/pop/unshfit/shfit/reverse/sort/slice/splice/indexOf/lastIndexOf)
  8. Date.getTime() 结果为 NaN
  9. w3c css参考网址
  10. stm8s103调试注意点