POJ 3304 Segments

大意:给你一些线段,找出一条直线可以穿过全部的线段,相交包含端点。

思路:遍历全部的端点,取两个点形成直线,推断直线是否与全部线段相交,假设存在这种直线,输出Yes。可是注意去重。

struct Point
{
double x, y;
} P[210];
struct Line
{
Point a, b;
} L[110]; double xmult(Point p1, Point p2, Point p)
{
return (p1.x-p.x)*(p2.y-p.y)-(p1.y-p.y)*(p2.x-p.x);
} bool segLineInter(Line seg, Line line)
{
double d1, d2;
d1 = xmult(seg.a, line.a, line.b);
d2 = xmult(seg.b, line.a, line.b);
if((d1>eps && d2 < -eps) || (d1 < -eps && d2 > eps))
return true;
if(fabs(d1) < eps || fabs(d2) < eps)
return true;
return false;
} int T;
int n; void Solve()
{
Line l1, l2;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
int t = 0;
for(int i = 0; i < n; ++i)
{
scanf("%lf%lf%lf%lf", &L[i].a.x, &L[i].a.y, &L[i].b.x, &L[i].b.y);
P[t++] = L[i].a;
P[t++] = L[i].b;
}
bool ans = false;
for(int i = 0; !ans && i < t; ++i)
{
for(int j = i+1; j < t; ++j)
{
bool flag = true;
if(fabs(P[i].x-P[j].x) < eps && fabs(P[i].y-P[j].y) < eps) continue;
for(int k = 0; k < n; ++k)
{
if(segLineInter(L[k], (Line){P[i], P[j]}) == false)
{
flag = false;
break;
}
}
if(flag == true)
{
ans = true;
break;
}
}
}
printf("%s!\n", ans?"Yes":"No");
}
}

POJ 3304 Segments(计算几何:直线与线段相交)的更多相关文章

  1. POJ 3304 Segments 判断直线和线段相交

    POJ 3304  Segments 题意:给定n(n<=100)条线段,问你是否存在这样的一条直线,使得所有线段投影下去后,至少都有一个交点. 思路:对于投影在所求直线上面的相交阴影,我们可以 ...

  2. POJ 3304 Segments (判断直线与线段相交)

    题目链接:POJ 3304 Problem Description Given n segments in the two dimensional space, write a program, wh ...

  3. POJ 3304 Segments (直线和线段相交判断)

    Segments Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7739   Accepted: 2316 Descript ...

  4. POJ 3304 Segments (直线与线段是否相交)

    题目链接 题意 : 能否找出一条直线使得所有给定的线段在该直线上的投影有一个公共点. 思路 : 假设存在一条直线a使得所有线段在该直线上的投影有公共点,则必存在一条垂直于直线a的直线b,直线b与所有线 ...

  5. POJ 1039 Pipe(直线和线段相交判断,求交点)

    Pipe Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8280   Accepted: 2483 Description ...

  6. POJ 3304 Segments(计算几何)

    意甲冠军:给出的一些段的.问:能否找到一条直线,通过所有的行 思维:假设一条直线的存在,所以必须有该过两点的线,然后列举两点,然后推断是否存在与所有的行的交点可以是 代码: #include < ...

  7. POJ 3304 Segments(直线)

    题目: Description Given n segments in the two dimensional space, write a program, which determines if ...

  8. POJ 3304 Segments(判断直线与线段是否相交)

    题目传送门:POJ 3304 Segments Description Given n segments in the two dimensional space, write a program, ...

  9. 判断直线与线段相交 POJ 3304 Segments

    题意:在二维平面中,给定一些线段,然后判断在某直线上的投影是否有公共点. 转化,既然是投影,那么就是求是否存在一条直线L和所有的线段都相交. 证明: 下面给出具体的分析:先考虑一个特殊的情况,即n=1 ...

随机推荐

  1. Spring-data-jpa 之Specification in的用法

    1.一个简单的 Predicate 的示例 构建简单的Predicate示例: Predicate p1=cb.like(root.get(“name”).as(String.class), “%”+ ...

  2. Oracle Process Cloud流程云实践

    本篇适合对Oracle Unified BPM有一定基础的人参考,本篇也是参考Oracle A-team  John Featherly的文章进行的实践. 1.      流程创建 打开cloud.o ...

  3. golangWEB框架gin学习之获取post参数

    原文地址:http://www.niu12.com/article/41 package main import ( "fmt" "github.com/gin-goni ...

  4. Linux内核分析(九)——总结篇

    序:写在前面的话        本次内容作为Linux内核的总结内容,主要涉及对Linux系统的总体的一些理解,同时将之前的一些总结贴出来作为大家的一个索引,希望笔者的博客能对和笔者一样的菜鸟有一些帮 ...

  5. Scala快学笔记(一)

    一,基本概念: 1,Scala是一种基于JVM的面向对象和函数式编程语言 2,基本类型:数值类型 ->:Byte,Short,Int,Long,Float,Double和布尔类型:Boolean ...

  6. Windows下编译vpx获得各个项目VS2010解决方案的步骤

    最近研究了一下几种常见的视频编码器:x264,x265,vpx.本文简单记录一下它们的编译方法. x264,x265,vpx这三个开源的视频编码器可以说是当今“最火”的视频编码器.x264现在占据着H ...

  7. 菜鸟调错(五)——jetty执行时无法保存文件

    背景交代: 上一篇博客写的是用jetty和Maven做开发.測试.在使用的过程中遇到一个小问题.就是在jetty启动以后,改动了jsp.xml等文件无法保存. 错误信息: 解决方式: 到Maven库( ...

  8. 关于public、private、protected、internal

    1.private修饰符 private修饰符用于设置类或类成员的訪问权限仅为所属类的内部, private也被称为私有修饰符.某些时候须要訪问私有类成员时,可通过get和set訪问器读取或改动. 2 ...

  9. Win7如何修改开机动画

    1 使用魔方美化大师可以替换WIN7的开机画面,我们用该软件打开一个开机动画,居然是一张BMP的图片.   2 在PS中可以发现,这张有21000像素长,大小12MB,可见所谓的动画其实是一个一个动作 ...

  10. vue - config

    build/build.js -> config 详细的config配置走向.