Segments - POJ 3304 (判断直线与线段是否相交)
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std; const int MAXN = ;
const double ESP = 1e-; struct Point
{
double x, y; Point(double x=, double y=):x(x), y(y){}
Point operator + (const Point &tmp) const{
return Point(x+tmp.x, y+tmp.y);
}
Point operator - (const Point &tmp) const{
return Point(x-tmp.x, y-tmp.y);
}
bool operator ==(const Point &tmp) const{
return (fabs(x-tmp.x) < ESP) && (fabs(y-tmp.y) < ESP);
}
int operator * (const Point &tmp) const{
double t = x*tmp.y - y*tmp.x; if(t > ESP)return ;
if(fabs(t) < ESP)return ;
return -;
}
};
struct Segment
{
Point A, B;
Segment(Point t1=, Point t2=){A=t1, B=t2;}
};
bool Find(Segment t, Segment seg[], int N)
{
for(int i=; i<=N; i++)
{///使用叉积判断是否想交
int k = fabs((t.A-t.B)*(seg[i].A-t.B) + (t.A-t.B)*(seg[i].B-t.B)); if(k==)return false;
} return true;
} int main()
{
int N, T; scanf("%d", &T); while(T--)
{
double x1, x2, y1, y2;
Point p[MAXN];
Segment seg[MAXN]; scanf("%d", &N); int M=; for(int i=; i<=N; i++)
{
scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2);
p[M++]=Point(x1, y1), p[M++]=Point(x2, y2);
seg[i]=Segment(p[M-], p[M-]);
} int ok = false; for(int i=; i<M && !ok; i++)
for(int j=i+; j<M && !ok; j++)
{
if(p[i] == p[j])
continue; ok = Find(Segment(p[i], p[j]), seg, N);
} if(ok)printf("Yes!\n");
else printf("No!\n");
} return ;
}
Segments - POJ 3304 (判断直线与线段是否相交)的更多相关文章
- POJ 3304 Segments(判断直线与线段是否相交)
题目传送门:POJ 3304 Segments Description Given n segments in the two dimensional space, write a program, ...
- C - Segments POJ - 3304 (判断线段相交)
题目链接:https://vjudge.net/contest/276358#problem/C 题目大意:给你n条线段,问你是否存在一条线段使得所有的线段在这条直线的投影至少具有一个交点? 具体思路 ...
- POJ 2074 /// 判断直线与线段相交 视野盲区
题目大意: 将所有物体抽象成一段横向的线段 给定房子的位置和人行道的位置 接下来给定n个障碍物的位置 位置信息为(x1,x2,y) 即x1-x2的线段 y相同因为是横向的 求最长的能看到整个房子的一段 ...
- 判断直线与线段相交 POJ 3304 Segments
题意:在二维平面中,给定一些线段,然后判断在某直线上的投影是否有公共点. 转化,既然是投影,那么就是求是否存在一条直线L和所有的线段都相交. 证明: 下面给出具体的分析:先考虑一个特殊的情况,即n=1 ...
- POJ 3304 Segments 判断直线和线段相交
POJ 3304 Segments 题意:给定n(n<=100)条线段,问你是否存在这样的一条直线,使得所有线段投影下去后,至少都有一个交点. 思路:对于投影在所求直线上面的相交阴影,我们可以 ...
- POJ 3304 Segments (判断直线与线段相交)
题目链接:POJ 3304 Problem Description Given n segments in the two dimensional space, write a program, wh ...
- POJ 3304 Segments(计算几何:直线与线段相交)
POJ 3304 Segments 大意:给你一些线段,找出一条直线可以穿过全部的线段,相交包含端点. 思路:遍历全部的端点,取两个点形成直线,推断直线是否与全部线段相交,假设存在这种直线,输出Yes ...
- Segments POJ 3304 直线与线段是否相交
题目大意:给出n条线段,问是否存在一条直线,使得n条线段在直线上的投影有至少一个公共点. 题目思路:如果假设成立,那么作该直线的垂线l,该垂线l与所有线段相交,且交点可为线段中的某两个交点 证明:若有 ...
- poj 3304 判断是否存在一条直线与所有线段相交
Segments Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8579 Accepted: 2608 Descript ...
随机推荐
- (四)值栈与OGNL
所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:值栈简介 值栈是对应每个请求对象的一套内存数据的封装,Struts2 会 ...
- 如何把visual studio 2010的工程文件迁入TFS2010中管理
如何在VS2010里面创建项目并添加到TFS2010里面. 新建一个项目,并把它添加到TFS,我们会收到下面的错误: 这是因为我们没有为项目创建Team project,而把它直接添加到了Team p ...
- Win32中GDI+应用(三)---Graphics类
在我理解看来,Graphics是一个device context和你的drawing conetent之间的一个中介.它存储了device context的相关属性,以及drawing content ...
- WPF学习(一)控件的公共属性
Visiblity控件是否可见:枚举类型:Visible表示可见.Collapsed不可见. IsEnabled:控件是否可用:bool类型. Background:背景色. FontSize:字体大 ...
- Apache 禁止访问目录
1.打开apache配置文件httpd.conf 2.找到 <Directory /> Options Indexes AllowOverride None Order allow,den ...
- android按行读取文件内容的几个方法
一.简单版 import java.io.FileInputStream; void readFileOnLine(){ String strFileName = "Filename.txt ...
- baba 运动网
import com.sun.image.codec.jpeg.* 找不到包 在Myeclipse中编译项目时,如果提示类似 com.sun.image.codec.jpeg.* 下: imp ...
- Linux内存映射(mmap)系列(1)
看到同事的代码中出现了mmap.所以自己私下学习学习,研究研究..... http://www.cnblogs.com/lknlfy/archive/2012/04/27/2473804.html ( ...
- Application(全局对象,ViewState
Application对象生存期和Web应用程序生存期一样长,生存期从Web应用程序网页被访问开始,HttpApplication类对象Application被自动创建,直到没有一个网页被访问时结束, ...
- 业界良心:Square开源Viewfinder,25万行代码全公布!
http://www.csdn.net/article/2014-05-06/2819633-square-open-sources-viewfinder https://github.com/vie ...