zoukankan      html  css  js  c++  java
  • HDU 1086

    判断线段两两相交的个数

    打模板熟练程度++;

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cmath>
     4 using namespace std;
     5 const double EPS = 1e-10;
     6 struct Point 
     7 {
     8     double x,y;
     9     Point(){}
    10     Point(double x1,double y1):x(x1),y(y1) {}
    11 }a[105],b[105];
    12 typedef Point Vect;
    13 Vect operator - (Vect A, Vect B) 
    14 { 
    15     return Vect(A.x - B.x, A.y - B.y); 
    16 }
    17 int dcmp(double x) 
    18 { 
    19     return fabs(x) < EPS ? 0 : (x < 0? -1: 1); 
    20 }
    21 double Cross(Vect A, Vect B) 
    22 { 
    23     return A.x * B.y - A.y * B.x; 
    24 }
    25 double Dot(Vect A, Vect B) 
    26 { 
    27     return A.x * B.x + A.y * B.y; 
    28 }
    29 bool OnSegment(Point p, Point a1, Point a2)
    30 {
    31     return dcmp(Cross(a1 - p, a2 - p)) == 0 && dcmp( Dot(a1 - p, a2 - p) ) <= 0;
    32 }
    33 
    34 bool SegmentIntersection(Point a1, Point a2, Point b1, Point b2)
    35 {
    36     double c1 = Cross(a2 - a1, b1 - a1);
    37     double c2 = Cross(a2 - a1, b2 - a1);
    38     double c3 = Cross(b2 - b1, a1 - b1);
    39     double c4 = Cross(b2 - b1, a2 - b1);
    40     if(dcmp(c1) * dcmp(c2) < 0 && dcmp(c3) * dcmp(c4) < 0) return 1;
    41     else if(OnSegment(b1, a1, a2) ) return 1;
    42     else if(OnSegment(b2, a1, a2) ) return 1;
    43     else if(OnSegment(a1, b1, b2) ) return 1;
    44     else if(OnSegment(a2, b1, b2) ) return 1;
    45     else return 0;
    46 }
    47 
    48 int main()
    49 {
    50     int n;
    51     while(~scanf("%d",&n) && n)
    52     {
    53         for(int i = 1; i <= n; i++)
    54             scanf("%lf%lf%lf%lf", &a[i].x, &a[i].y, &b[i].x, &b[i].y);
    55         int ans = 0;
    56         for(int i = 1; i <= n; i++)
    57             for(int j = i + 1; j <= n; j++)
    58                 if(SegmentIntersection(a[i], b[i], a[j], b[j]))
    59                     ans++;
    60         printf("%d
    ", ans);
    61     }
    62 } 
    我自倾杯,君且随意
  • 相关阅读:
    HDU 1069 Monkey and Banana
    HDU 1029 Ignatius and the Princess IV
    HDU 1024 Max Sum Plus Plus
    Gym100923H Por Costel and the Match
    Codeforces 682C Alyona and the Tree
    Codeforces 449B Jzzhu and Cities
    Codeforces (ccpc-wannafly camp day2) L. Por Costel and the Semipalindromes
    Codeforces 598D (ccpc-wannafly camp day1) Igor In the Museum
    Codeforces 1167c(ccpc wannafly camp day1) News Distribution 并查集模板
    快乐数问题
  • 原文地址:https://www.cnblogs.com/nicetomeetu/p/5712878.html
Copyright © 2011-2022 走看看