标签:des style blog http java color
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1086
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7167 Accepted Submission(s): 3480
//////////////////////////////////////////////////////////////////////////////直接上的模板解决的,不知是喜是忧啊
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <iostream> #include <algorithm> using namespace std; const int MAX=110; const double eps = 1e-6; struct point { double x,y; }; struct beline { point a,b; }; point p[MAX]; int n=0; bool dy(double x,double y) { return x>y+eps; } bool xy(double x,double y) { return x<y-eps; } bool dyd(double x,double y) { return x > y - eps; } bool xyd(double x,double y) { return x<y+eps; } bool dd(double x,double y) { return fabs(x-y) < eps; } double crossProduct(point a,point b,point c) { return (c.x - a.x)*(b.y-a.y)-(b.x-a.x)*(c.y-a.y); } bool onSegment(point a,point b,point c) { double maxx=max(a.x,b.x); double maxy=max(a.y,b.y); double minx=min(a.x,b.x); double miny=min(a.y,b.y); if(dd(crossProduct(a,b,c),0.0)&&dyd(c.x,minx)&&xyd(c.x,maxx)&&dyd(c.y,miny)&&xyd(c.y,maxy)) return true; return false; } bool segIntersect(point p1,point p2,point p3,point p4) { double d1 = crossProduct(p3,p4,p1); double d2 = crossProduct(p3,p4,p2); double d3 = crossProduct(p1,p2,p3); double d4 = crossProduct(p1,p2,p4); if(xy(d1 * d2,0.0)&&xy(d3*d4,0.0)) return true; if(dd(d1,0.0)&&onSegment(p3,p4,p1)) return true; if(dd(d2,0.0)&&onSegment(p3,p4,p2)) return true; if(dd(d3,0.0)&&onSegment(p1,p2,p3)) return true; if(dd(d4,0.0)&&onSegment(p1,p2,p4)) return true; return false; } int main() { int cas,i,j; while(scanf("%d",&cas)!=EOF&&cas!=0) { beline L[MAX]; n=0; for(i=0;i<cas;i++) { scanf("%lf%lf%lf%lf",&L[i].a.x,&L[i].a.y,&L[i].b.x,&L[i].b.y); } for(i=0;i<cas;i++) { for(j=i+1;j<cas;j++) if(segIntersect(L[i].a,L[i].b,L[j].a,L[j].b)) { n++; } } printf("%d\n",n); } return 0; }
hdu 1086(计算几何入门题——计算线段交点个数),布布扣,bubuko.com
标签:des style blog http java color
原文地址:http://www.cnblogs.com/ccccnzb/p/3861463.html