线段相交
2017-08-11 16:06
232 查看
1264 线段相交
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
收藏
关注
给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为相交)。 如果相交,输出"Yes",否则输出"No"。
Input
Output
Input示例
Output示例
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
收藏
关注
给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为相交)。 如果相交,输出"Yes",否则输出"No"。
Input
第1行:一个数T,表示输入的测试数量(1 <= T <= 1000) 第2 - T + 1行:每行8个数,x1,y1,x2,y2,x3,y3,x4,y4。(-10^8 <= xi, yi <= 10^8) (直线1的两个端点为x1,y1 | x2, y2,直线2的两个端点为x3,y3 | x4, y4)
Output
输出共T行,如果相交输出" 4000 Yes",否则输出"No"。
Input示例
2 1 2 2 1 0 0 2 2 -1 1 1 1 0 0 1 -1
Output示例
Yes No
#include <bits/stdc++.h> using namespace std; typedef long long LL; const int mod=1000000009; LL xc(LL a,LL b,LL c,LL d) { LL x=a*d; LL y=b*c; if(x==y) return 0; return x>y?1:-1; } int main() { int t; scanf("%d",&t); while(t--) { LL x1,y1,x2,y2,x3,y3,x4,y4; scanf("%lld%lld%lld%lld%lld%lld%lld%lld",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4); if(xc(x2-x1,y2-y1,x3-x1,y3-y1)*xc(x2-x1,y2-y1,x4-x1,y4-y1)<=0&&xc(x4-x3,y4-y3,x1-x3,y1-y3)*xc(x4-x3,y4-y3,x2-x3,y2-y3)<=0) printf("Yes\n"); else printf("No\n"); } return 0; }
相关文章推荐
- objective-c判断两条线段相交
- poj 4048 计算几何(线段相交)金华邀请赛 E题
- poj1066巧妙的线段相交的应用
- poj1410巧妙变成直线与线段相交
- Segments----是否存在直线与所有线段相交
- 二维平面内线段规范相交的判定
- POJ 1556 计算几何 判断线段相交
- POJ 1066 判断线段相交
- POJ1556+几何+dij+线段相交
- POJ 3449 Geometric Shapes(判断几个不同图形的相交,线段相交判断)
- POJ 1408 Fishnet【枚举+线段相交+叉积求面积】
- poj 1556 判线段相交+最短路问题
- POJ-2653 Pick-up sticks(线段相交)
- Circuit Board(zju1648,判断线段相交)
- poj 1127:Jack Straws(判断两线段相交 + 并查集)
- POJ 1410 线段相交 (代数几何的解法)
- POJ 1410 Intersection(线段相交)
- POJ 1410 Intersection(线段非规范相交)
- NuptOJ1041线段相交——向量积
- POJ 1410 Intersection(线段相交&&推断点在矩形内&&坑爹)