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. CSS:超出省略三部曲

    overflow:hidden; 超出隐藏 white-space:nowrap;   不让换行,直到<br /> text-overflow:ellipsis;  超出显示省略号... ...

  2. hdu 1863 畅通project

    #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm& ...

  3. Centos7.4 建站系统和软件版本搭配

    一.系统和软件版本搭配 版本: 1.1.2 类型: 建站系统 适用于: Centos7.4 64bit 集成软件版本: nginx_versi=1.12.2 PHP=7.1.13 (已提供提供Zend ...

  4. linux设置定制器自动执行任务

    基本格式 :  * * * * * command  分 时 日 月 周 命令  第1列表示分钟1-59 每分钟用*或者 */1表示  第2列表示小时1-23(0表示0点)  第3列表示日期1-31  ...

  5. mac更新系统后Git不能用,提示missing xcrun at

    今天更新了mac系统,然后就踩了这个坑. 启动AndroidStudio 右上角提示: can't start git: /usr/bin/git probably the path to git e ...

  6. stat,查看文件属性

    shell命令,查看文件详细属性 别再跟我回答ls -l了

  7. 高仿手机QQ音乐之——Android带进度条的开关

    最新版的手机QQ音乐体验确实不错,发现首页播放按钮能够显示歌曲当前进度条.认为挺有新意.效果例如以下: 自己琢磨了下.能够用自己定义组件来实现,试着做了一下.效果例如以下: 整理了下思路.大概设计流程 ...

  8. Kubernetes使用prometheus+grafana做一个简单的监控方案

    前言 本文介绍在k8s集群中使用node-exporter.prometheus.grafana对集群进行监控.其实现原理有点类似ELK.EFK组合.node-exporter组件负责收集节点上的me ...

  9. 【转载】HTTP和SOAP完全就是两个不同的协议

    http:是一个客户端和服务器端请求和应答的标准(TCP). http协议其目的是为了提供一种发布和接收htttp页面的方法 http协议的客户端与服务器的交互:由HTTP客户端发起一个请求,建立一个 ...

  10. Note:pandas时间序列处理

    Note 1.Time Series #1 from datetime import datetime now=datetime.now() now.year now.month now.day #2 ...