NEFU 922 判断线段相交

简介:

http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=922

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
typedef struct
{
    int x,y;
}sa;
int chaji(sa a,sa b,sa c)//计算ca和cb
{
    return (a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(a.y-c.y);
}
bool online(sa a,sa b,sa c) //判断点c是否在线段ab上
{
    if(min(a.x,b.x)<=c.x&&c.x<=max(a.x,b.x))
    {
        if(min(a.y,b.y)<=c.y&&c.y<=max(a.y,b.y))
        {
            return 1;
        }
    }
    return 0;
}
bool xj(sa a,sa b,sa c,sa d)
{
    int d1=chaji(c,d,a);//计算ac,ad
    int d2=chaji(c,d,b);//bc,bd
    int d3=chaji(a,b,c);//ca,cb
    int d4=chaji(a,b,d);//db,da
    if(d1*d2<0&&d3*d4<0)
        return 1;
    else if(d1==0&&online(c,d,a))
        return 1;
    else if(d2==0&&online(c,d,b))
        return 1;
    else if(d3==0&&online(a,b,c))
        return 1;
    else if(d4==0&&online(a,b,d))
        return 1;
    return 0;
}
int main()
{
    sa data[5];
    int m;
    while(cin>>m&&m)
    {
        while(m--)
        {
            for(int i=0;i<4;i++)
               cin>>data[i].x>>data[i].y;
            if(xj(data[0],data[1],data[2],data[3]))
               cout<<"YES"<<endl;
            else
               cout<<"no"<<endl;
        }
    }
    return 0;
}
目录
相关文章
|
4月前
|
存储 Java 测试技术
《Spring 测试指南》:JPA、MockMvc 和 @SpringBootTest 详解
Spring 提供了一组测试工具,可以轻松地测试 Spring 应用程序的各个组件,包括控制器、服务、存储库和其他组件。它具有丰富的测试注释、实用程序类和其他功能,以帮助进行单元测试、集成测试等。
61 0
|
3月前
|
Java Spring
spring注解@Autowired、@Resource说明
spring注解@Autowired、@Resource说明
|
4月前
|
Java Spring 容器
SpringAop
SpringAop
33 0
|
4月前
|
JSON Java 测试技术
MockMvc
MockMvc
30 0
|
6月前
|
Java 编译器
解决NoSuchBeanDefinitionException: No qualifying bean of type ‘bean.User‘ available
解决NoSuchBeanDefinitionException: No qualifying bean of type ‘bean.User‘ available
|
7月前
|
XML 监控 Java
SpringAOP介绍与使用
SpringAOP介绍与使用
42 0
|
8月前
|
Java Spring
|
11月前
|
数据安全/隐私保护
SpringAOP(二)
SpringAOP(二)
|
11月前
|
数据安全/隐私保护
SpringAOP(四)
SpringAOP(四)
|
11月前
|
XML Java 数据格式
SpringAOP(一)
SpringAOP(一)