POJ 1127 /// 判断线段与线段是否相交
题目大意:
给定n条线段
接下来n行是端点信息
接下来询问 a b 是否相交
若a与c相交 b与c相交 ,那么a与b就是相交的
先判断任两条线段是否相交 再用folyd
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <stdio.h>
#include <string.h>
using namespace std;
const double eps = 1e-; double add(double a,double b) {
if(abs(a+b)<eps*(abs(a)+abs(b))) return ;
return a+b;
} // 考虑误差
struct P {
double x,y;
P(){};
P(double _x,double _y):x(_x),y(_y){}
P operator -(P p) {
return P(add(x,-p.x),add(y,-p.y)); };
P operator +(P p) {
return P(add(x,p.x),add(y,p.y)); };
P operator *(double d) {
return P(x*d,y*d); };
double dot(P p) {
return add(x*p.x,y*p.y); };
double det(P p) {
return add(x*p.y,-y*p.x); };
};
// c在直线ab上 外积==0,c在ab两点之间 内积<=0
bool onSeg(P a,P b,P c)
{
return (a-c).det(b-c)== && (a-c).dot(b-c)<=;
} // 求两直线ab与cd交点
/*
设直线ab上点为 a+(b-a)t,t为变量
交点需满足在直线cd上 则(d-c)*(a+t(b-a)-c)=0(外积)
分解为加减式子 将t放在等号左边 其他放在右边
化简推导得t=(d-c)*(c-a)/(d-c)*(b-a)
则交点为a+(b-a)*((d-c)*(c-a)/(d-c)*(b-a))
*/
P ins(P a,P b,P c,P d)
{
return a+(b-a)*((d-c).det(c-a)/(d-c).det(b-a));
} bool insSS(P a,P b,P c,P d)
{
if((a-b).det(c-d)==) //平行
return onSeg(a,b,c) || onSeg(a,b,d)
|| onSeg(c,d,a) || onSeg(c,d,b);
else {
P t=ins(a,b,c,d);
return onSeg(a,b,t) && onSeg(c,d,t);
}
} int main()
{
int n,x,y;
bool G[][];
P p[],q[];
while(~scanf("%d",&n)) {
if(n==) break;
for(int i=;i<n;i++)
scanf("%lf%lf%lf%lf",&p[i].x,&p[i].y,&q[i].x,&q[i].y); memset(G,,sizeof(G));
for(int i=;i<n;i++) {
G[i][i]=;
for(int j=;j<i;j++)
G[i][j]=G[j][i]=insSS(p[i],q[i],p[j],q[j]);
} for(int i=;i<n;i++)
for(int j=;j<n;j++)
for(int k=;k<n;k++)
G[j][k] |= G[j][i]&&G[i][k]; while(~scanf("%d%d",&x,&y)) {
if(x+y==) break;
if(G[--x][--y]) printf("CONNECTED\n");
else printf("NOT CONNECTED\n");
}
} return ;
}
POJ 1127 /// 判断线段与线段是否相交的更多相关文章
- Segments - POJ 3304 (判断直线与线段是否相交)
题目大意:给出一些线段,然后判断这些线段的投影是否有可能存在一个公共点. 分析:如果这些线段的投影存在一个公共点,那么过这个公共点作垂线一定与所有的直线都想交,于是题目转化成是否存在一个直线可以经 ...
- POJ 2074 /// 判断直线与线段相交 视野盲区
题目大意: 将所有物体抽象成一段横向的线段 给定房子的位置和人行道的位置 接下来给定n个障碍物的位置 位置信息为(x1,x2,y) 即x1-x2的线段 y相同因为是横向的 求最长的能看到整个房子的一段 ...
- poj 1127 -- Jack Straws(计算几何判断两线段相交 + 并查集)
Jack Straws In the game of Jack Straws, a number of plastic or wooden "straws" are dumped ...
- 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 Description Given n segments in the two dimensional space, write a program, ...
- 判断直线与线段相交 POJ 3304 Segments
题意:在二维平面中,给定一些线段,然后判断在某直线上的投影是否有公共点. 转化,既然是投影,那么就是求是否存在一条直线L和所有的线段都相交. 证明: 下面给出具体的分析:先考虑一个特殊的情况,即n=1 ...
- poj 2653 线段与线段相交
Pick-up sticks Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 11884 Accepted: 4499 D ...
- poj 1269 线段与线段相交
Intersecting Lines Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13605 Accepted: 60 ...
- POJ 1039 Pipe【经典线段与直线相交】
链接: http://poj.org/problem?id=1039 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...
随机推荐
- noip 2014 总结
2014 年的noip 已经结束了,成绩从个人而言不是特别的理想,从今年题的逗的程度,本来是个xxx 就被玩脱了= = 当然现在后悔事没有用的了,不过第二天全屏技术的在最后一小时看到了两道题的错误,然 ...
- PHP ftp_rename() 函数
定义和用法 ftp_rename() 函数重命名 FTP 服务器上的文件或目录. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 ftp_rename(ftp_connectio ...
- 今天工作整整一个月了,来记录一下(web前端)
25号,工作整整一个月了,时光飞逝, 这一个月以来,无论是工作上还是生活上,都让我成长了很多,也多了些对人生的思考… 先回顾一下找工作的那段时间吧年前找工作有多辛酸,年后找工作就有多幸运那段日子,我这 ...
- 关于移动端使用swiper做图片文字轮播的思考
最近做移动端网页的时候,需要在首页添加一个公告的模块,用来轮播公告消息标题并且能链接到相应的详情页面,最开始用的是swiper插件,在安卓上测试完全没有问题,但是在苹果机上就没有那么灵敏了,来回切换首 ...
- NX二次开发-UFUN创建圆柱UF_MODL_create_cyl1
NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...
- NX二次开发-NXOpen获取边的端点NXOpen::Edge::GetVertices
NX9+VS2012 #include <NXOpen/Features_BlockFeatureBuilder.hxx> #include <NXOpen/Features_Fea ...
- NX二次开发-NXOpen窗口打印NXMessageBox&ListingWindow
NX9+VS2012 #include <NXOpen/NXObject.hxx> #include <NXOpen/Part.hxx> #include <NXOpen ...
- 强大的pdf文件操作小工具——PDFtk的小白用法 【转载】
转载出处https://www.cnblogs.com/basterdaidai/p/6204518.html 前言 作为程序员,大家都知道的,总是会被技术小白问各种跟编程没什么关系的硬件.软件问题. ...
- NApache+JBOSS架构方案
NApache+JBOSS架构方案在技术上是可行的: 在公司的3台电脑上安装APACHE,在我的电脑上安装一个jboss,按照apache与jboss的通信要求配置(参考集群配置),就可以实现IE访问 ...
- Go将统治下一个10年?Go语言发展现状分析
“本文是国内Go语言大中华区首席布道师——许式伟,在QCon2015上海站上的分享.他预测Go语言10年内一定会超过C和java,并且统治这一个10年. Go语言语法及标准库变化 Go从1.0版本到现 ...