hihoCoder - 1040 - 矩形判断 (简单计算几何~)
来源:互联网 发布:国际标准智商测试软件 编辑:程序博客网 时间:2024/06/06 03:11
#1040 : 矩形判断
时间限制:1000ms
单点时限:1000ms
内存限制:256MB
- 样例输入
30 0 0 11 0 1 10 1 1 11 0 0 00 1 2 31 0 3 23 2 2 31 0 0 10 1 1 01 0 2 02 0 1 11 1 0 1
- 样例输出
YESYESNO
描述
给出平面上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条线段是否恰好围成矩形。
思路:首先判断四条边中的两个点是否两两重合,,即总共只有四个点(用set实现)
判断出只有四点之后,,则这是一个四边形,,然后在判断一条边和其他边的关系是否只有垂直和平行两种关系即可
AC代码:
#include <cstdio>#include <cstring> #include <algorithm>#include <set>using namespace std;struct point{int x, y;bool operator < (const point& p2) const //用于排序 { //先判断横坐标 if(x<p2.x||(x==p2.x&&y<p2.y)) return true; return false; } bool operator == (const point& p2) const //用于判等 { return (x==p2.x&&y==p2.y); }};struct line{point p1, p2;};int judgePoint(line *l){set<point> s;for(int i=0; i<4; i++){s.insert(l[i].p1);s.insert(l[i].p2);}return (s.size() == 4);}int judgeRect(line *l){for(int i=1; i<4; ++i) { //判断是不是垂直 if((l[0].p1.y-l[0].p2.y)*(l[i].p1.y-l[i].p2.y)==-(l[0].p1.x-l[0].p2.x)*(l[i].p1.x-l[i].p2.x)) continue; //判断是不是平行 if((l[0].p1.y-l[0].p2.y)*(l[i].p1.x-l[i].p2.x)==(l[0].p1.x-l[0].p2.x)*(l[i].p1.y-l[i].p2.y)) continue; return false; } return true; }int main(){line l[4];int T;scanf("%d", &T);while(T--){for(int i=0; i<4; i++)scanf("%d %d %d %d", &l[i].p1.x, &l[i].p1.y, &l[i].p2.x, &l[i].p2.y);int flag = 0;if(judgePoint(l) && judgeRect(l)) flag = 1;if(flag) printf("YES\n");else printf("NO\n");}return 0;}
1 0
- hihoCoder - 1040 - 矩形判断 (简单计算几何~)
- hihoCoder 1040 : 矩形判断 计算几何
- hihoCoder #1040 : 矩形判断 (几何)
- hihocoder#1040判断矩形
- 【hihoCoder】 #1040 : 矩形判断
- hihocoder #1040 矩形判断
- [HihoCoder]#1040 : 矩形判断
- hihoCoder--1040 矩形判断
- hihocoder #1040 : 矩形判断
- hihocoder#1040之矩形判断
- hihocoder #1040 : 矩形判断 #java
- 计算几何----判断两矩形是否相交
- hdu2948 简单计算几何 判断点在三角形 矩形 圆形内
- hihoCoder题目AC #1040 : 矩形判断 Java
- hihocoder 1040 矩形判断解题报告
- hihoCoder 矩形判断
- 计算几何----判断点是否在一个矩形内
- POJ 1410Intersection 计算几何 判断线段与矩形位置
- 解一元线性同余方程组
- 搭建集群jdk安装配置
- Jugs - UVa 571 bfs
- Facebook真带来了全球16%手机销量?
- codeforces--510C--Fox And Names
- hihoCoder - 1040 - 矩形判断 (简单计算几何~)
- android:clipChildren,是否限制子View在其范围内
- 实现浮点类型的幂运算,pow(x,n)
- Android高效加载大图、多图解决方案,有效避免程序OOM
- vim之二--vim文档编辑
- vs断点不可用
- Linux内核中rbtree的使用
- C语言读取BMP格式的图片
- Sql Server查询性能优化之创建合理的索引(下篇)