(线段判交的一些注意。。。)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[];
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 <= ){ //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[].x1,&point[].y1,
&point[].x2,&point[].y2,
&point[].x1,&point[].y1,
&point[].x2,&point[].y2);
//快速排斥实验。 只要其中一个为真,那两条线段一定不相交。
if(!(max(point[].x1,point[].x2) < min(point[].x1,point[].x2) ||
max(point[].y1,point[].y2) < min(point[].y1,point[].y2) ||
max(point[].x1,point[].x2) < min(point[].x1,point[].x2) ||
max(point[].y1,point[].y2) < min(point[].y1,point[].y2))){
if(cmp(point[],point[]) && cmp(point[],point[])){
printf("Interseetion\n");
}
else{
printf("Not Interseetion\n");
}
}
else{
printf("Not Interseetion\n");
} }
return ;
}
请使用手机"扫一扫"x
(线段判交的一些注意。。。)nyoj 1016-德莱联盟的更多相关文章
- (叉积,线段判交)HDU1086 You can Solve a Geometry Problem too
You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
- POJ 1556 The Doors 线段判交+Dijkstra
The Doors Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6734 Accepted: 2670 Descrip ...
- (计算几何 线段判交) 51nod1264 线段相交
1264 线段相交 给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为相交). 如果相交,输出"Yes",否则输出"No". ...
- POJ 2653 Pick-up sticks(线段判交)
Description Stan has n sticks of various length. He throws them one at a time on the floor in a rand ...
- NYOJ 1016 判断两线段是否相交
#include<cstdio> #include<cmath> #include<iostream> #include<algorithm> #inc ...
- 计算几何——poj1410,线段不规范交
直接用kuangbin的板子,能判不规范,规范和不交 另外线段在矩形内也可以,判断方式是比较线段的端点和矩形四个角 #include <cstdio> #include <cmath ...
- You can Solve a Geometry Problem too(线段求交)
http://acm.hdu.edu.cn/showproblem.php?pid=1086 You can Solve a Geometry Problem too Time Limit: 2000 ...
- CodeForces - 605C 凸包+直线与凸包判交
题目大意: 要完成两种属性p,q的需求,给定n个双属性物品及其单位个物品中含有的属性,要求选择最少的物品来达成属性需求.(可以选择实数个物品) 题解: 实际上是一种属性混合问题 我们知道对于两种双属性 ...
- nyoj-1016-德莱联盟(向量叉乘判断线段相交)
叉乘的坐标表示: A(X1,Y1), B(X2, Y2), C(XC,YC), D(XD, YD);AB = (X2-X1, Y2-Y1);CD = (XD-XC, YD-YC); 向量AB,CD的叉 ...
随机推荐
- WebAPI MVC Change Identity Default Table
看过之前的文章小伙伴们应该已经明白了,当我们新建一个带有身份验证的模板时,会自带Identity Server,并且它的表名和字段名也都是默认的. 那么该如何修改它,并让EF知道呢?不废话,直接上代码 ...
- React 学习(四) ---- 生命周期函数
现在我们能修改状态,页面可以进行交互了,但是还有一种状态改变没有解决,那就是倒计时效果,时间一直在变化,组件状态也一直在改变,但我们什么都没有做,如果要实现这样的效果,需要怎么处理? 我们都知道,改变 ...
- codeforces433B
Kuriyama Mirai's Stones CodeForces - 433B 有n颗宝石,每个宝石都有自己的价值. 然后m次询问.问区间[i,j]的宝石的总值,或者问排序后的区间[i,j]的总值 ...
- Centos使用虚拟环境创建python django工程
本地环境 通常我们登录就是后就是本地环境 本地环境下查看pip安装了那些包 pip3 list 可以看到本地环境下我们安装的是django1.11.16版本,现在我有个项目要使用django 2.0以 ...
- 修改iptables后重启返回错误
在防火墙添加规则后我是这样改的vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ...
- Bootstrap modal 模态框垂直居中显示补丁
<script> $.fn.modal.Constructor.prototype.adjustDialog1 = function(){ var modalIsOverflowing = ...
- Java虚拟机构建对象过程小记
Java对象的内存分布 Java对象的构建 Java程序中,新建对象,除了常见的new语句之外,还可以通过反射机制.Object.clone方法.反序列化以及Unsafe.allocateInstan ...
- #191 sea(动态规划)
假设已经求出了i个点j个桥的连通图数量f[i][j],容易由此推出最终答案,套路地枚举1号点所在连通块大小即可. 假设已经求出了i个点的边双连通图数量h[i],考虑由此推出f[i][j].可以枚举其中 ...
- 【CF633D】Fibonacci-ish
题目描述 小y最近迷上了fibonacci数列,他定义了一种数列叫类fibonacci数列: 1.这个数列包含至少\(2\)个元素 2.\(f_0\)和\(f_1\)是任意选取的 3.\(f_{n+2 ...
- Pfsense2.34中文版
Pfsense2.34中文版 来源 https://forum.netgate.com/topic/112076/pfsense2-34%E4%B8%AD%E6%96%87%E7%89%88-%E8 ...