zoukankan      html  css  js  c++  java
  • POJ 3304 Segments | 线段相交

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #define N 105
    #define eps 1e-8
    using namespace std;
    double abs (double x)
    {
        return x>0?x:-x;
    }
    bool dcmp(double x,double y)
    {
        if (abs(x-y)<eps) return 1;
        return 0;
    }
    struct point
    {
        double x,y;
        point () {};
        point (double _x,double _y) :
    	x(_x),y(_y) {};
        /*
        point operator - (const point &a) const
    	{
    	    return point (x-a.x,y-a.y);
    	}
        double operator * (const point &rhs) const
    	{
    	    return x*rhs.y-rhs.x*y;
    	}
        */
        bool operator < (const point &rhs) const
    	{
    	    return x<rhs.x;
    	}
        friend point operator + (const point &a,const point &b) {
    	return point(a.x+b.x,a.y+b.y);
        }
        friend point operator - (const point &a,const point &b) {
    	return point(a.x-b.x,a.y-b.y);
        }
        friend double operator * (const point &a,const point &b) {
    	return a.x*b.y-a.y*b.x;
        }
        bool operator == (const point &rhs) const
    	{
    	    return dcmp(x,rhs.x) && dcmp(y,rhs.y);
    	}
    };
    struct line
    {
        point a,b;
    }seg[N];
    int T,n;
    bool check (point l,point z)
    {
        if (l==z) return 0;
        for (int i=1;i<=n;i++)
    	 if(((l-seg[i].a)*(l-z)) *((l-seg[i].b)*(l-z)) > eps) return 0;
        return 1;
    }
    void solve()
    {
        	scanf("%d",&n);
    	for (int i=1;i<=n;i++)
    	    scanf("%lf%lf%lf%lf",&seg[i].a.x,&seg[i].a.y,&seg[i].b.x,&seg[i].b.y);
    	if (n<3)
    	{
    	    puts("Yes!");
    	    return ;
    	}
    	for (int i=1;i<=n;i++)
    	{
    	    for (int j=i+1;j<=n;j++)
    		if ( check(seg[i].a,seg[j].b) ||
    		     check(seg[i].b,seg[j].a) ||
    		     check(seg[i].a,seg[j].a) ||
    		     check(seg[i].b,seg[j].b))
    		{
    		    puts("Yes!");
    		    return ;
    		}
    	}
    	puts("No!");
    }
    int main()
    {
        scanf("%d",&T);
        while (T--)
        {
    	solve();
        }
        return 0;
    }
    
  • 相关阅读:
    github.com/dotnet/orleans
    C#开源
    Windows Server 2016正式版14393英文版ISO镜像下载:_X64FRE_ZH-CN.ISO
    Windows Server 2016
    功能更新到 Windows 10 企业版, 版本 1607
    Load Audio or Vedio files
    Socket.Available 属性
    CaptureManagerSDK
    Net.Sockets
    Solid Edge如何制作装配体的剖视图
  • 原文地址:https://www.cnblogs.com/mrsheep/p/8005761.html
Copyright © 2011-2022 走看看