nyoj1228矩形判断
描述
-
给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形。
- 输入
-
输入第一行是一个整数T(1<=T<=100),代表测试数据的数量。
每组数据包含4行,每行包含4个整数x1, y1, x2, y2 (-100000 <= 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.矩形定义:有一个直角的平行四边形;2.平行四边形定义:两对边平行的四边形),代码注释中有详解。
-
AC代码:
-
#include <stdio.h> #include <algorithm> using namespace std; struct node{int x, y, cnt; }p[8]; int main() {int t, i, j, k;double K[4], max = 1.0/0.0;struct node b[8];scanf("%d", &t);while(t--) {for(i = 0, k = 0; i < 8; i++) {b[i].cnt = 0;scanf("%d%d", &p[i].x, &p[i].y);for(j = 0; j < k; j++) {if(p[i].x == b[j].x && p[i].y == b[j].y) {b[j].cnt++;break;}}if(j == k) {b[k].x = p[i].x;b[k].y = p[i].y;b[k++].cnt++;}if(i%2) K[i/2] = (p[i].y-p[i-1].y+0.0)/(p[i].x-p[i-1].x+0.0);}char fag = 1;if(b[0].cnt!=2||b[1].cnt!=2||b[2].cnt!=2||b[3].cnt!=2) fag = 0;//四条边要构成四边形的话四边形的每个顶点都应该出现两次,否则不是四边形 else {sort(K,K+4);if(K[0] != K[1] || K[2] != K[3]) fag = 0;//判断是否为平行四边形 else {if(K[0]*K[3] != -1) fag = 0;//没有直角则不是矩形 if(K[0]==0&&K[2]==max) fag = 1;//一边斜率为0,一边没有斜率与y轴平行的情况也要考虑 }}if(fag) printf("YES\n");else printf("NO\n");}return 0; }
nyoj1228矩形判断相关推荐
- hihoCoder1040 矩形判断
#1040 : 矩形判断 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形. 输入 输入第一行是一个整数T ...
- java矩形翻转_如何判断一个点在旋转后的矩形中
前言 最近在做的一款游戏中,用到点与旋转矩形的判定来获得一个选中的物体.在此做个记录 如图所示,黄色的颜料屏是旋转的,如果不做处理直接判断点是否在矩形中,那么点击红点的位置会判定为选中物体.显然这是不 ...
- HTML矩形与矩形、圆形与圆形、矩形与圆形元素的碰撞判断与动画
1. 矩形与矩形 判断两个矩形是否碰撞,判断条件:d1Right > d2Left && d1Bottom > d2Top && d1Left < d ...
- 判断两个矩形是否有重合部分
最近在做人工智能项目,需要对两个矩形是否有重合做出判读 但注意的是,不是判断两个检测目标是否重合,检测目标的矩形只要左上角点和右下角点就可表示一个矩形,判断是否重合比较简单,但是现在是两个矩形是有一定 ...
- VUE3 实现前台图片标注添加矩形框、图片放大、缩小、鼠标滚轮缩放
VUE3 实现前台图片标注 功能包括: 鼠标左键拖动添加矩形框标记区域,鼠标点击已绘制的矩形: 选中矩形,并绘制不同选中效果: 鼠标在已绘制的矩形中按住左键拖动,选中并移动矩形:选中矩形后鼠标在选中矩 ...
- 原生js实现canvas画布中绘制、移动、拖拽、删除矩形(如简易截图工具)
功能描述 待图片上传并加载完成后,重新生成画布: 鼠标在画布区域内绘制,移动,拖拽,删除矩形(如截图工具一般): isboundary() 判断是否需要判断边界问题,默认false. 效果截图 实现代 ...
- 《计算几何》代码实现:2、最小外包矩形
最小外包矩形(MBR-Minimum Bounding Rectangle)就是包围图元,且平行于x,y轴的最小外接矩形. 最小外包矩形是一个在GIS(Geographic Information S ...
- 850.矩形面积 II 【矩形的分解】
题解 启发式解法-矩形分解 思路 因为多个矩形重叠部分的面积只需要计算一次,因此可以想到将重叠的多个矩形转化为多个不重叠的矩形,最后通过计算不重叠矩形中所有的矩形面积得到答案. 所需要的前置知识,针对 ...
- 使用c++设计矩形类
矩形类 一.前言 二.带分数的运算 1.头文件(Rectangle.h) 2.源文件(实现函数) 3.源文件(测试函数) 4.运行截图 三.总结 一.前言 为了更深入的学习c++,小编将带领大家一起使 ...
最新文章
- GridSearchCV 与 RandomizedSearchCV 调参
- 把开机时Ctrl+Alt+Delete取消掉了
- 2017年CISCN初赛
- Java技巧分享:判断字符串是否为空常的三种方法
- python绘图函数返回_python – Matplotlib返回一个绘图对象
- 史上最详细的宝塔部署java项目流程
- 亲身体验 DDOS(拒绝服务)攻击硬防DIY
- 拍拍贷2019Q1财报:核心用户转化率上升 迎战资本竞争力略显不足
- DPDK系列之三DPDK介绍及简单应用
- git pull 报错 Your local changes would be overwritten by merge. Commit, stash or revert them to procee
- npm安装electron时卡死 ,而利用cnpm安装electron时失败(等一系列幺蛾子)
- 我在前锋培训的日子第二天
- Centos7安装MPICH3在配置安装目录时出现问题
- jsMath对象中的三角函数
- python 第七周
- 用计算机中的知识秀恩爱,自从用专业知识改了情侣名,女友再也不逼我秀恩爱了...
- 拨开云雾见月明—计算其实很简单
- C++数据结构实验---线性表的基本操作
- 五年,他们从应届生成为了滴滴的「技术扛把子」
- c语言开发百度地图,百度地图开发(一)
热门文章
- Object.wait()与Object.notify()的用法
- Linux 被***后的检查
- CSS学习笔记(十四) 我们前端是怎么跟设计师沟通的
- ccna____总结
- JAVA基础知识(6)
- MET 3P5: 工业工程
- three approaches to industrial experiences at cambridge
- student consulting system
- 快速读书的方法(对于理工科的可能适用)
- ‘xxfile' Missing the class attribute 'ExtensionOfNativeClass'