#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
分析:先判断四条边是否首尾相连,即是否构成四边形,再判断四边形是否是矩形。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
struct Node{int x1,y1,x2,y2;
}a[10];int f(Node A,Node B)
{int ans=0;if(A.x1==B.x1&&A.y1==B.y1) ans+=1;if(A.x1==B.x2&&A.y1==B.y2) ans+=10;if(A.x2==B.x1&&A.y2==B.y1) ans+=100;if(A.x2==B.x2&&A.y2==B.y2) ans+=1000;return ans;
}int par(Node A,Node B)//判断平行
{if((A.x2-A.x1)*(B.y2-B.y1)==(B.x2-B.x1)*(A.y2-A.y1)) return 1;return 0;
}int ver(Node A,Node B)//判断垂直
{if((A.x2-A.x1)*(B.x2-B.x1)+(A.y2-A.y1)*(B.y2-B.y1)==0)return 1;return 0;
} int check()
{int i,m=0,n=0;for(i=1;i<4;i++)if(!f(a[0],a[i]))//无公共点break;for(int j=1;j<4;j++)if(j!=i){if(m==0) m=j;else n=j;}if(i==4) return 0;int flag=f(a[0],a[n]);if(!(flag==1||flag==10||flag==100||flag==1000)) return 0;flag=f(a[n],a[i]);if(!(flag==1||flag==10||flag==100||flag==1000)) return 0;flag=f(a[i],a[m]);if(!(flag==1||flag==10||flag==100||flag==1000)) return 0;flag=f(a[0],a[m]);if(!(flag==1||flag==10||flag==100||flag==1000)) return 0;if(!(par(a[0],a[i])&&par(a[m],a[n]))) return 0;if(!(ver(a[0],a[n])&&ver(a[0],a[m]))) return 0;if(!(ver(a[i],a[n])&&ver(a[i],a[m]))) return 0;return 1;
}int main()
{int T;scanf("%d",&T);while(T--) {for(int i=0;i<4;i++)scanf("%d%d%d%d",&a[i].x1,&a[i].y1,&a[i].x2,&a[i].y2);if(!check()) printf("NO\n");else printf("YES\n");}return 0;
}

View Code


转载于:https://www.cnblogs.com/ACRykl/p/9560613.html

hihoCoder1040 矩形判断相关推荐

  1. nyoj1228矩形判断

    描述 给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形. 输入 输入第一行是一个整数T(1<=T<=100),代表测试数据的数量. 每组数据包含4行,每行包含4个整数x1 ...

  2. java矩形翻转_如何判断一个点在旋转后的矩形中

    前言 最近在做的一款游戏中,用到点与旋转矩形的判定来获得一个选中的物体.在此做个记录 如图所示,黄色的颜料屏是旋转的,如果不做处理直接判断点是否在矩形中,那么点击红点的位置会判定为选中物体.显然这是不 ...

  3. HTML矩形与矩形、圆形与圆形、矩形与圆形元素的碰撞判断与动画

    1. 矩形与矩形 判断两个矩形是否碰撞,判断条件:d1Right > d2Left && d1Bottom > d2Top && d1Left < d ...

  4. 判断两个矩形是否有重合部分

    最近在做人工智能项目,需要对两个矩形是否有重合做出判读 但注意的是,不是判断两个检测目标是否重合,检测目标的矩形只要左上角点和右下角点就可表示一个矩形,判断是否重合比较简单,但是现在是两个矩形是有一定 ...

  5. VUE3 实现前台图片标注添加矩形框、图片放大、缩小、鼠标滚轮缩放

    VUE3 实现前台图片标注 功能包括: 鼠标左键拖动添加矩形框标记区域,鼠标点击已绘制的矩形: 选中矩形,并绘制不同选中效果: 鼠标在已绘制的矩形中按住左键拖动,选中并移动矩形:选中矩形后鼠标在选中矩 ...

  6. 原生js实现canvas画布中绘制、移动、拖拽、删除矩形(如简易截图工具)

    功能描述 待图片上传并加载完成后,重新生成画布: 鼠标在画布区域内绘制,移动,拖拽,删除矩形(如截图工具一般): isboundary() 判断是否需要判断边界问题,默认false. 效果截图 实现代 ...

  7. 《计算几何》代码实现:2、最小外包矩形

    最小外包矩形(MBR-Minimum Bounding Rectangle)就是包围图元,且平行于x,y轴的最小外接矩形. 最小外包矩形是一个在GIS(Geographic Information S ...

  8. 850.矩形面积 II 【矩形的分解】

    题解 启发式解法-矩形分解 思路 因为多个矩形重叠部分的面积只需要计算一次,因此可以想到将重叠的多个矩形转化为多个不重叠的矩形,最后通过计算不重叠矩形中所有的矩形面积得到答案. 所需要的前置知识,针对 ...

  9. 使用c++设计矩形类

    矩形类 一.前言 二.带分数的运算 1.头文件(Rectangle.h) 2.源文件(实现函数) 3.源文件(测试函数) 4.运行截图 三.总结 一.前言 为了更深入的学习c++,小编将带领大家一起使 ...

最新文章

  1. 数据科学Python训练营课程:从初级到高级 Python for Data Science Bootcamp Course:Beginner to Advanced
  2. Vim Vundle 插件管理器
  3. bootstrap-wysiwyg中JS控件富文本的用法
  4. 【Network Security!】xrdp+vnc4server+xfce4远程管理Ubuntu服务器桌面
  5. poj 1451(Trie)
  6. linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head linux下
  7. 编程实现newton插值c++_数据体操:数据处理和IDW地理插值算法
  8. 阿里云支持超级账本最新版 其区块链解决方案进入商用阶段
  9. ejb3.0 中数据库的配置
  10. react-native 加载图片的几种方式
  11. 华胜天成-容灾流程管理平台解决方案
  12. (10.1.4)拟物设计
  13. 使用示波器测量运放带宽和压摆率
  14. 部署外网网站(一)——内网穿透实现外网访问
  15. Word 2019如何从任意页开始设置页码?
  16. easy connect无法卸载干净,后台sangfor文件一直在运行的卸载方法
  17. [易飞]一张领料单单身仓库quot;飞了quot;引起的思考
  18. 如何使用计算机作文600字,计算机比赛作文600字
  19. 在世界球场一球成名:HMS 生态为游戏开发者送出的助攻
  20. 利用DSF深度优先搜索来解容器倒水问题

热门文章

  1. 华为云HiLens Kit上手初探:一款几乎“零门槛”的AI开发套件
  2. #第六次会议#(4.21)
  3. 负载均衡器之 Haproxy
  4. Lodash学习--Array篇
  5. 自己整合优化的一个Android框架
  6. C 语言 *** glibc detected *** free(): invalid next size (fast): 0x0000000000be1010 ***
  7. 桌面虚拟化之远程协助
  8. js按钮触发网页提醒_jquery,js页面加载时自动点击触发jq按钮-Go语言中文社区
  9. js闭包循环原因_常见的三个 JS 面试题
  10. Python Module — grpcio gRPC 远程调用示例程序