[hihoCoder]矩形判断
#1040 : 矩形判断
描述
给出平面上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]矩形判断的更多相关文章
- HihoCoder - 1040 矩形判断
矩形判断 给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形. Input 输入第一行是一个整数T(1<=T<=100),代表测试数据的数量. 每组数据包含4行,每行包含4 ...
- hihocoder #1040 矩形判断(计算几何问题 给8个点的坐标,能否成为一个矩形 【模板思路】)
#1040 : 矩形判断 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形. 输入 输入第一行是一个整数T ...
- hihoCoder 1040 矩形判断(计算几何)
http://hihocoder.com/problemset/problem/1040 首先判断四条线段是否相交,给出八个点,如果有一些点重合,并且不同坐标的点只有4个的话,表示可以构成四边形. 然 ...
- hihocoder 1040(矩形判断)
题目链接:传送门 题目大意:给你四条线段,判断能否围成一个面积大于0的矩形,能输出YES,不能输出NO 题目思路: 合法的四条线段应该满足 1.应该必须有四个不同的点 2.线段斜率分为两组,组内 ...
- [bzoj2517]矩形覆盖
Description 给定一个$l\;\times\;w$的矩形,和$n$个圆,求最小的$k$使得每个圆的半径$\;\times\;k$后,能覆盖整个矩形. Input 第一行一个整数$T$,表示数 ...
- POJ 1410 Intersection (线段和矩形相交)
题目: Description You are to write a program that has to decide whether a given line segment intersect ...
- Hihocoder 1275 扫地机器人 计算几何
题意: 有一个房间的形状是多边形,而且每条边都平行于坐标轴,按顺时针给出多边形的顶点坐标 还有一个正方形的扫地机器人,机器人只可以上下左右移动,不可以旋转 问机器人移动的区域能不能覆盖整个房间 分析: ...
- 2019-11-29-win10-uwp-如何判断一个控件在滚动条的里面是用户可见
原文:2019-11-29-win10-uwp-如何判断一个控件在滚动条的里面是用户可见 title author date CreateTime categories win10 uwp 如何判断一 ...
- 2019-4-29-win10-uwp-如何判断一个控件在滚动条的里面是用户可见
title author date CreateTime categories win10 uwp 如何判断一个控件在滚动条的里面是用户可见 lindexi 2019-04-29 10:40:33 + ...
随机推荐
- PowerBI开发 第四篇:DAX表达式
DAX 表达式主要用于创建度量列(Measure),度量值是根据用户选择的Filter和公式,计算聚合值,DAX表达式基本上都是引用对应的函数,函数的执行有表级(Table-Level)上下文和行级( ...
- linux各类压缩解压命令大全
01-.tar格式解包:[*******]$ tar xvf FileName.tar 打包:[*******]$ tar cvf FileName.tar DirName(注:tar是打包,不是压缩 ...
- maven 项目出现 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
maven 导入项目中经常出现这个问题 严重: Error configuring application listener of class org.springframework.web.cont ...
- String类的替换方法(9)
1:String replace(char old,char new) 2: String replace(String old,String new) 3: trim();//去除字符串空格 ...
- [Node.js] 2、利用node-git-server快速搭建git服务器
本文用到了node-git-server 1.检测本地git版本 该包的使用需要机器上本来就安装git,且git的版本大于等于2.7: ╭─root@lt /home/workspace ╰─# gi ...
- 【运维】CPU负载
最近对我的本本(4核8线程)用top命令看系统状况出现了CPU利用率超过200%的情况,非常诧异,查了下相关资料,把这个问题弄清楚了.首先来分析下CPU Load load average: 0.09 ...
- P1035
P1035 时间限制: 1 Sec 内存限制: 128 MB提交: 87 解决: 36[提交][状态][讨论版] 题目描述 给出一张n*n(n< =100)的国际象棋棋盘,其中被删除了一些点 ...
- OpenCV探索之路(二十六):如何去除票据上的印章
最近在做票据的识别的编码工作时遇到一些问题,就是票据上往往会有一些红色印章把一些重要信息区域给覆盖了,比如一些开发票人员盖印章时比较随意,容易吧一些关键区域给遮蔽了,这让接下来的票据识别很困难,因此, ...
- PHP合并两张图片(水印)
$dst_im = "http://img6.cache.netease.com/photo/0001/2016-04-15/BKMTUO8900AP0001.jpg"; $src ...
- C# JAVA成员访问修饰符比较
在面向对象的访问修饰符中常用的有public ,private ,protected C# 访问修饰符: private < protected internal < internal/p ...