1016-德莱联盟

内存限制:64MB 时间限制:1000ms 特判: No
通过数:9 提交数:9 难度:1

题目描述:

欢迎来到德莱联盟。。。。

德莱文。。。

德莱文在逃跑,卡兹克在追。。。。

我们知道德莱文的起点和终点坐标,我们也知道卡兹克的起点和 终点坐标,问:卡兹克有可能和德莱文相遇吗?,并且保证他们走的都是直线。

输入描述:

几组数据,一个整数T表示T组数据
每组数据 8个实数,分别表示德莱文的起点和终点坐标,以及卡兹克的起点和终点坐标

输出描述:

如果可能 输出 Interseetion,否则输出 Not Interseetion

样例输入:

复制

2
-19.74 7.14 22.23 -27.45 -38.79 -5.08 47.51 34.01
-8.61 9.91 -32.47 6.47 -3.81 -16.1 7.82 -6.37

样例输出:

Interseetion
Not Interseetion

参考链接:https://www.cnblogs.com/sytu/articles/3876585.html

这个是线段判交问题,其实线段重合符合这个题的要求。同时需要先进行快速排斥实验,先将两条会在同一条直线上的线段并不重合的情况排除,比如(0 0 1 1 2 2 3 3)这个情况。然后进行跨立实验。并不相交和重合的线段排除。C++代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct Point{double x1,y1,x2,y2;
}point[2];
int cmp(const Point& a,const Point& b){double k1 = (a.x2 - a.x1)*(b.y1 - a.y1) - (b.x1 - a.x1)*(a.y2 - a.y1);double k2 = (a.x2 - a.x1)*(b.y2 - a.y1) - (b.x2 - a.x1)*(a.y2 - a.y1);if(k1 * k2 <= 0){    //k1*k2 == 0是指的是线段重合。 return true;}else{return false;}
}
int main(){int T;scanf("%d",&T);while(T--){scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&point[0].x1,&point[0].y1,&point[0].x2,&point[0].y2,&point[1].x1,&point[1].y1,&point[1].x2,&point[1].y2);//快速排斥实验。 只要其中一个为真,那两条线段一定不相交。 if(!(max(point[0].x1,point[0].x2) < min(point[1].x1,point[1].x2) || max(point[0].y1,point[0].y2) < min(point[1].y1,point[1].y2) || max(point[1].x1,point[1].x2) < min(point[0].x1,point[0].x2) ||max(point[1].y1,point[1].y2) < min(point[0].y1,point[0].y2))){if(cmp(point[0],point[1]) && cmp(point[1],point[0])){printf("Interseetion\n");}else{printf("Not Interseetion\n");}}else{printf("Not Interseetion\n");}}return 0;
}

 

请使用手机"扫一扫"x

转载于:https://www.cnblogs.com/Weixu-Liu/p/10599278.html

(线段判交的一些注意。。。)nyoj 1016-德莱联盟相关推荐

  1. NYOJ 1016 德莱联盟(计算几何 线段相交判定)

    判断两条线段是否相交. 在判断两条线段是否相交时,我们常用快速排斥实验跟跨立实验这两种方法,快速排斥实验能很快的排除掉线段不相交的情况,但并没法成为线段相交的充要条件,在快速排斥实验之后接上跨立实验就 ...

  2. 判断两线段相交[nyoj 1016 德莱联盟]

    题目链接:点击打开链接 题目意思很简单,就是问两个线段是否可以相交. 思路很是简单,两个线段互相跨立就可以相交了.所谓跨立就是,一条线段的两个点在另一条线段的两侧. 这个题目的数据有点水,没有考虑到点 ...

  3. 德莱联盟[判断线段相交]

    德莱联盟 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们知道德莱文的起点和终点坐标,我们也 ...

  4. 德莱联盟(判断线段是否相交)

    德莱联盟 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们知道德莱文的起点和终点坐标,我们也 ...

  5. 德莱联盟 计算几何 线段相交

    难度:1 描述 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们知道德莱文的起点和终点坐标,我们也知道卡兹克的起点和 终点坐标,问:卡兹克有可能和德莱文相遇吗?,并且保证 ...

  6. NYOJ1016(德莱联盟)(判断线段相交)

    德莱联盟 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们知道德莱文的起点和终点坐标,我们也 ...

  7. 德莱联盟(判断两个线段是否相交)

    德莱联盟 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们知道德莱文的起点和终点坐标,我们也 ...

  8. ccsu1359 木棒相交 (叉积线段判交,并查集判断是否属于同一个集合)

    题意:判断n条木棒中木棒a是否与木棒b相交.其中木棒的相交具有传递性. 首先用一个判断线段是否相交的函数判断相交: struct Point {double x;double y; }; typede ...

  9. NYOJ1016:德莱联盟(判线段相交)

    德莱联盟 时间限制:1000ms  |  内存限制:65535KB 难度:1 描述 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们知道德莱文的起点和终点坐标,我们也知道 ...

最新文章

  1. 在博客园添加Lisp(或其它)代码高亮
  2. 判读一个对象不为空_LabVIEW面向对象编程_初窥门径(3):开发实践
  3. 智能门锁中CPU卡加密
  4. 带手势划动功能的日历源码
  5. 动手开发一个简易的 PHP for Git Server 第一章
  6. Source Generators实现简版AutoMapper
  7. Git得基本使用方法add、commit、push、checkout以及Pull
  8. 新手入坑 java的开发语言环境
  9. CSDN博客如何显示空白符
  10. 2运行内存多大_电脑有没有必要升到16GB内存?今年内存这么便宜?要不要抄底升级到16GB?...
  11. TypeError: unhashable type: 'list'
  12. CSS, JavaScript 压缩, 美化, 加密, 解密
  13. 一个GUI程序究竟会有几个线程?
  14. 赶快拿走!分享4款实用的软件,一般人我都不告诉他!
  15. HDU 5468 Puzzled Elena (2015年上海赛区网络赛A题)
  16. 用js代码简单的介绍自己
  17. win7中显示桌面的方式有哪些?
  18. java控制分屏_java实现arcgis地图分屏(双图)
  19. oracle12c中dump控制文件,oracle控制文件转储说明
  20. docker --privileged=true 参数作用

热门文章

  1. 学习大数据开发零基础是不是限制,小白能否快速学会?附上学习路线图
  2. 再谈自适应学习——技术篇
  3. 编程难?零基础如何学好编程?
  4. java clh_【Java】CLH 自旋锁
  5. 用Vue实现小Q聊天机器人(一)
  6. 《程序员的职业修养》读后感(一):专业主义
  7. 浙江大学 工程伦理 第十二单元测试答案
  8. 红孩儿编输器的模块设计14
  9. android数据库降级_Android之sqlite数据库版本升级和降级的处理(onUpgrade和onDowngrade)...
  10. 使用IDEA写程序时,运行忽然报错,提示:在类*** 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args)