#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

题目链接:http://hihocoder.com/problemset/problem/1040

解题思路:首先判断四个线段是否可以构成四边形,在判断构成的四边形是不是矩形。即用一个结构体存向量的x,y,只要判断有三个向量有两个相等并且有两个平方和等于另外一个平方就可以判断是矩形了;

AC代码:

#include<stdio.h>
#include<math.h>
struct Point
{
int x,y;
}p[];
struct Dis
{
int xx,yy;
}dis[]; int judge()
{
if(abs(dis[].xx)==abs(dis[].xx)&&abs(dis[].yy)==abs(dis[].yy)&&dis[].xx*dis[].xx+dis[].yy*dis[].yy==&&dis[].xx*dis[].xx+dis[].yy*dis[].yy==)
return ;
if(abs(dis[].xx)==abs(dis[].xx)&&abs(dis[].yy)==abs(dis[].yy)&&dis[].xx*dis[].xx+dis[].yy*dis[].yy==&&dis[].xx*dis[].xx+dis[].yy*dis[].yy==)
return ;
if(abs(dis[].xx)==abs(dis[].xx)&&abs(dis[].yy)==abs(dis[].yy)&&dis[].xx*dis[].xx+dis[].yy*dis[].yy==&&dis[].xx*dis[].xx+dis[].yy*dis[].yy==)
return ;
return ;
}
int main()
{
int i,j,tcase,len,tt,temp; scanf("%d",&tcase);
while(tcase--)
{
temp=;
for(i=;i<;i++)
scanf("%d%d",&p[i].x,&p[i].y);
for(i=;i<;i++)
{
tt=;
for(j=;j<;j++)
{
if(i==j) continue;
else if(p[i].x==p[j].x&&p[i].y==p[j].y)
{
tt++;
if(tt>=)
{
temp=;break;
}
}
}
}
if(temp)
{
dis[].xx=p[].x-p[].x;dis[].yy=p[].y-p[].y;
dis[].xx=p[].x-p[].x;dis[].yy=p[].y-p[].y;
dis[].xx=p[].x-p[].x;dis[].yy=p[].y-p[].y;
dis[].xx=p[].x-p[].x;dis[].yy=p[].y-p[].y;
if(judge())
printf("YES\n");
else
printf("NO\n");
}
else
printf("NO\n"); }
return ;
}

[hihoCoder]矩形判断的更多相关文章

  1. HihoCoder - 1040 矩形判断

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

  2. hihocoder #1040 矩形判断(计算几何问题 给8个点的坐标,能否成为一个矩形 【模板思路】)

    #1040 : 矩形判断 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形. 输入 输入第一行是一个整数T ...

  3. hihoCoder 1040 矩形判断(计算几何)

    http://hihocoder.com/problemset/problem/1040 首先判断四条线段是否相交,给出八个点,如果有一些点重合,并且不同坐标的点只有4个的话,表示可以构成四边形. 然 ...

  4. hihocoder 1040(矩形判断)

    题目链接:传送门 题目大意:给你四条线段,判断能否围成一个面积大于0的矩形,能输出YES,不能输出NO 题目思路:    合法的四条线段应该满足 1.应该必须有四个不同的点 2.线段斜率分为两组,组内 ...

  5. [bzoj2517]矩形覆盖

    Description 给定一个$l\;\times\;w$的矩形,和$n$个圆,求最小的$k$使得每个圆的半径$\;\times\;k$后,能覆盖整个矩形. Input 第一行一个整数$T$,表示数 ...

  6. POJ 1410 Intersection (线段和矩形相交)

    题目: Description You are to write a program that has to decide whether a given line segment intersect ...

  7. Hihocoder 1275 扫地机器人 计算几何

    题意: 有一个房间的形状是多边形,而且每条边都平行于坐标轴,按顺时针给出多边形的顶点坐标 还有一个正方形的扫地机器人,机器人只可以上下左右移动,不可以旋转 问机器人移动的区域能不能覆盖整个房间 分析: ...

  8. 2019-11-29-win10-uwp-如何判断一个控件在滚动条的里面是用户可见

    原文:2019-11-29-win10-uwp-如何判断一个控件在滚动条的里面是用户可见 title author date CreateTime categories win10 uwp 如何判断一 ...

  9. 2019-4-29-win10-uwp-如何判断一个控件在滚动条的里面是用户可见

    title author date CreateTime categories win10 uwp 如何判断一个控件在滚动条的里面是用户可见 lindexi 2019-04-29 10:40:33 + ...

随机推荐

  1. 201521123067 《Java程序设计》第13周学习总结

    201521123067 <Java程序设计>第13周学习总结 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 Q1. 网络基 ...

  2. Markdow使用的简单介绍

    一个例子: 例子开始 1. 本章学习总结 (字体较大,用法:#你要放大的标题) 今天主要学习了三个知识点 封装 继承 多态 用法: - 封装 - 继承 - 多态 2. 书面作业 Q1. java He ...

  3. Linux下的定时任务 - Cron服务

    最近搞咕自己的笔记系统,虽然现在是个人的使用,对于数据库的数据还是比较少,但是安全还是一个我必须注意的东西. (特别是前段时间中了比特币的病毒之后,更是让我关注了我的主机的安全的问题.) 今天的随记是 ...

  4. 离线安装 Cloudera Manager 5 和 CDH5.10

    关于CDH和Cloudera Manager CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloud ...

  5. 【京东详情页】——原生js学习之匿名函数

    一.引言 在js模块中,要给每一个功能封装一个匿名函数.为了更好的理解什么是匿名函数,为什么要用匿名函数,我做了一些查阅和学习. 二.匿名函数 什么是:在创建时,不被任何变量引用的函数. 为什么:节约 ...

  6. 动易CMS - 添加自定义字段

    SELECT TOP 10 * FROM PE_CommonModel C INNER JOIN PE_U_xsjg U ON C.ItemID=U.ID WHERE C.Status=99 ORDE ...

  7. SSM框架——Spring+SpringMVC+Mybatis的搭建教程

    一:概述 SSM框架在项目开发中经常使用到,相比于SSH框架,它在仅几年的开发中运用的更加广泛. Spring作为一个轻量级的框架,有很多的拓展功能,最主要的我们一般项目使用的就是IOC和AOP. S ...

  8. 【Spring】高级装配

    前言 前面讲解了bean的核心装配技术,其可应付很多中装配情况,但Spring提供了高级装配技术,以此实现更为高级的bean装配功能. 高级装配 配置profile bean 将所有不同bean定义放 ...

  9. SQL server学习(一)数据库的基本知识、基本操作(分离、脱机、收缩、备份、还原、附加)和基本语法

    在软件测试中,数据库是必备知识,共同探讨. 阅读目录 基本知识 数据库发展史 数据库名词 SQL组成 基本操作 登录数据库操作 数据库远程连接操作 数据库分离操作 数据库脱机.联机操作 数据库收缩操作 ...

  10. java人员正确使用IDEA 的方式

    博主是Java开发人员,以前一直都用myeclipse来开发的,说实话感觉myeclipse毫无美感可言,后来经过同事介绍,认识了IDEA,一眼就相中了IDEA黑色的主题风格,自此就抛弃了旧爱myec ...