HDU2150-Pipe-折线相交(叉乘)
来源:互联网 发布:mac删除windows后内存 编辑:程序博客网 时间:2024/05/21 08:03
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2150
好吧,之前一直不想用叉乘判断线段相交问题,毕竟我觉得用直线方程是在是太方便太直接了;
直到我遇到了这个题目,真的是给它跪了,WA到死。。。不得跪舔叉乘。。。
至于叉乘,我就不赘述了,这个博客写的很不错,可以看看;链接:http://blog.csdn.net/chenbang110/article/details/7742535
#include<iostream>#include<string>#include<cstdio>#include<cstring>#include<queue>#include<map>#include<cmath>#include<stack>#include<set>#include<vector>#include<algorithm>#define LL long long#define inf 1<<30#define s(a) scanf("%d",&a)#define Clear(a,b) memset(a,b,sizeof(a))using namespace std;const int N=200005;int n,a,b;int num[105];struct node{ double x,y;};node P[35][105];double Cross_Prouct(node A,node B,node C) // 计算BA叉乘CA;{ return (B.x-A.x)*(C.y-A.y)-(B.y-A.y)*(C.x-A.x);}bool Intersect(node A,node B,node C,node D) // 通过叉乘判断线段是否相交;{ if(min(A.x,B.x)<=max(C.x,D.x)&& // 快速排斥实验; min(C.x,D.x)<=max(A.x,B.x)&& min(A.y,B.y)<=max(C.y,D.y)&& min(C.y,D.y)<=max(A.y,B.y)&& Cross_Prouct(A,B,C)*Cross_Prouct(A,B,D)<0&& // 跨立实验; Cross_Prouct(C,D,A)*Cross_Prouct(C,D,B)<0) // 叉乘异号表示在两侧; return true; else return false;}bool Solve() // 暴力枚举每条折线的每条线段是否相交;{ for(int i=0;i<n-1;i++){ for(int j=i+1;j<n;j++){ for(int ii=1;ii<num[i];ii++){ for(int jj=1;jj<num[j];jj++){ if(Intersect(P[i][ii-1],P[i][ii],P[j][jj-1],P[j][jj])) return true; } } } } return false;}int main(){ while(~scanf("%d",&n)){ for(int i=0;i<n;i++){ s(num[i]); for(int j=0;j<num[i];j++){ scanf("%lf%lf",&P[i][j].x,&P[i][j].y); } } if(n==1) printf("No\n"); else{ bool flag=Solve(); if(!flag)printf("No\n"); else printf("Yes\n"); } } return 0;}
1 0
- HDU2150-Pipe-折线相交(叉乘)
- hdu2150 Pipe (判断线段是否相交)
- hdu2150 Pipe --判断线段是否相交
- hdu2150 Pipe 计算几何 判断相交
- HDU2150 Pipe
- 【计算几何初步-代码好看了点线段相交】【HDU2150】Pipe
- POJ 1039 Pipe 简单的叉乘
- Pipe(poj1039线段相交)
- HDU-2150 Pipe(math叉乘判断)
- POJ 3304 Segments [枚举+叉乘判断线段相交]
- POJ 1039Pipe(直线相交)
- poj 1039 Pipe 直线与线段相交
- POJ 1039 Pipe(线段直线相交)
- HDOJ 2150 Pipe (线段相交)
- poj_1039 Pipe(直线与线段相交)
- poj 1039 Pipe (线段相交判定)
- POJ 1039 Pipe【计算几何+直线相交】
- poj1269求两条直线的关系(相交(求交点)---叉乘),平行,共线)
- hdu 4813 Hard Code
- 代码优化
- 递归的学习(全排列)
- hdu5361 In Touch 神奇的dij,神奇的写法
- select、poll、epoll之间的区别
- HDU2150-Pipe-折线相交(叉乘)
- 对遗传算法理解
- 使用 Virtual Box (mac 版)安装 xp 虚拟机剪切板不能共享,屏幕不能自动调整的解决办法
- 九度oj 1112
- 聊聊我的高效编程之路
- UBI error: ubi_io_write: error -5 while writing 512 bytes to PEB 60:512, wri
- 1039. 到底买不买(20)
- Logcat日志不打印(可能是手机出厂做了限制)
- GCD介绍(三):Dispatch Sources