(线段判交的一些注意。。。)nyoj 1016-德莱联盟
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-德莱联盟相关推荐
- NYOJ 1016 德莱联盟(计算几何 线段相交判定)
判断两条线段是否相交. 在判断两条线段是否相交时,我们常用快速排斥实验跟跨立实验这两种方法,快速排斥实验能很快的排除掉线段不相交的情况,但并没法成为线段相交的充要条件,在快速排斥实验之后接上跨立实验就 ...
- 判断两线段相交[nyoj 1016 德莱联盟]
题目链接:点击打开链接 题目意思很简单,就是问两个线段是否可以相交. 思路很是简单,两个线段互相跨立就可以相交了.所谓跨立就是,一条线段的两个点在另一条线段的两侧. 这个题目的数据有点水,没有考虑到点 ...
- 德莱联盟[判断线段相交]
德莱联盟 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们知道德莱文的起点和终点坐标,我们也 ...
- 德莱联盟(判断线段是否相交)
德莱联盟 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们知道德莱文的起点和终点坐标,我们也 ...
- 德莱联盟 计算几何 线段相交
难度:1 描述 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们知道德莱文的起点和终点坐标,我们也知道卡兹克的起点和 终点坐标,问:卡兹克有可能和德莱文相遇吗?,并且保证 ...
- NYOJ1016(德莱联盟)(判断线段相交)
德莱联盟 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们知道德莱文的起点和终点坐标,我们也 ...
- 德莱联盟(判断两个线段是否相交)
德莱联盟 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们知道德莱文的起点和终点坐标,我们也 ...
- ccsu1359 木棒相交 (叉积线段判交,并查集判断是否属于同一个集合)
题意:判断n条木棒中木棒a是否与木棒b相交.其中木棒的相交具有传递性. 首先用一个判断线段是否相交的函数判断相交: struct Point {double x;double y; }; typede ...
- NYOJ1016:德莱联盟(判线段相交)
德莱联盟 时间限制:1000ms | 内存限制:65535KB 难度:1 描述 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们知道德莱文的起点和终点坐标,我们也知道 ...
最新文章
- 在博客园添加Lisp(或其它)代码高亮
- 判读一个对象不为空_LabVIEW面向对象编程_初窥门径(3):开发实践
- 智能门锁中CPU卡加密
- 带手势划动功能的日历源码
- 动手开发一个简易的 PHP for Git Server 第一章
- Source Generators实现简版AutoMapper
- Git得基本使用方法add、commit、push、checkout以及Pull
- 新手入坑 java的开发语言环境
- CSDN博客如何显示空白符
- 2运行内存多大_电脑有没有必要升到16GB内存?今年内存这么便宜?要不要抄底升级到16GB?...
- TypeError: unhashable type: 'list'
- CSS, JavaScript 压缩, 美化, 加密, 解密
- 一个GUI程序究竟会有几个线程?
- 赶快拿走!分享4款实用的软件,一般人我都不告诉他!
- HDU 5468 Puzzled Elena (2015年上海赛区网络赛A题)
- 用js代码简单的介绍自己
- win7中显示桌面的方式有哪些?
- java控制分屏_java实现arcgis地图分屏(双图)
- oracle12c中dump控制文件,oracle控制文件转储说明
- docker --privileged=true 参数作用
热门文章
- 学习大数据开发零基础是不是限制,小白能否快速学会?附上学习路线图
- 再谈自适应学习——技术篇
- 编程难?零基础如何学好编程?
- java clh_【Java】CLH 自旋锁
- 用Vue实现小Q聊天机器人(一)
- 《程序员的职业修养》读后感(一):专业主义
- 浙江大学 工程伦理 第十二单元测试答案
- 红孩儿编输器的模块设计14
- android数据库降级_Android之sqlite数据库版本升级和降级的处理(onUpgrade和onDowngrade)...
- 使用IDEA写程序时,运行忽然报错,提示:在类*** 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args)