hihoCoder 1040 : 矩形判断 计算几何

1040 : 矩形判断

时间限制: 1000ms
单点时限: 1000ms
内存限制: 256MB

描述

给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形。

输入

输入第一行是一个整数T(1<=T<=100),代表测试数据的数量。

每组数据包含4行,每行包含4个整数x1, y1, x2, y2 (0 <= x1, y1, x2, y2 <= 100000);其中(x1, y1), (x2,y2)代表一条线段的两个端点。

输出

每组数据输出一行YES或者NO,表示输入的4条线段是否恰好围成矩形。

样例输入
3
0 0 0 1
1 0 1 1
0 1 1 1
1 0 0 0
0 1 2 3
1 0 3 2
3 2 2 3
1 0 0 1
0 1 1 0
1 0 2 0
2 0 1 1
1 1 0 1
样例输出
YES
YES
NO
/*
1:判断是否为四边形:八个点中,两两重合,总共有四个点,那么一定是一个四边形,set
2:判断是否矩形 :判断平行或垂直,用斜率 
*/
#include
#include
#include
#include
#include
using namespace std;
#define N 5
struct point{
	int x,y;
	bool operator<(const point &q)const
	{
		if(x ss;
		for(i=0;i<4;i++)
		{
			scanf("%d%d%d%d",&num[i].p1.x,&num[i].p1.y,&num[i].p2.x,&num[i].p2.y);
			ss.insert(num[i].p1);
			ss.insert(num[i].p2);
		}	
		if(ss.size()!=4)
		{
			printf("NO\n");
			continue;
		}	
		
		f=1;
		for(i=0;i<4;i++)
		{
			if(!judge(num[0],num[i]))
			{
				f=0;
				break;
			}
		}
		if(f)
			printf("YES\n");
		else
			printf("NO\n");
		
	}
	return 0;
}

你可能感兴趣的:(HihoCoder,OJ)