XTU1178 Rectangle--判断矩形是否相交
来源:互联网 发布:英文翻译软件哪个最好 编辑:程序博客网 时间:2024/05/16 09:19
题目描述
给你两个平行于坐标轴的矩形,请判断两者是不是相交(面积有重合的部分)?
input:第一行是一个整数K,表示样例数。每个样例占两行,每行是4个整数,表示一个矩形的对角线点的坐标,坐标值为0到1,000之间。output:每个样例输出一个结果,相交输出Yes,否则输出No。
样例输入
2
0 0 1 1
1 1 2 2
0 0 2 2
1 1 3 3
样例输出
No
Yes
解题思路
方法1:
分别找到2个矩形右下角的坐标中最小的x(minx)和最小的y(miny),再找到2个矩形左上角坐标中最大的x(maxx)和最大的y(maxy)。最后,相交的矩形即对角线[minx,miny]--[maxx,maxy]所构成的矩形。
如果minx>maxx或miny>maxy则矩形不相交。
方法2:
设2个矩形a,b的中心分别为oa 和ob,通过作图很容易发现 如果2个矩形要有交集必须满足2个条件:
oa ob横坐标距离<两矩形横边和/2 且 oaob纵坐标距离<两矩形纵边和/2 。
AC代码:
#include<cstdio>#include<cmath>int main(){int k;double x[5],y[5];double x1,x2,y1,y2,s1,s2,x3,y3;scanf("%d",&k);while(k--){for(int i=0;i<4;i++) scanf("%lf%lf",x+i,y+i);x1=(x[1]+x[0])/2;x2=(x[3]+x[2])/2;y1=(y[1]+y[0])/2;y2=(y[3]+y[2])/2;s1=abs(x[1]-x[0])+abs(x[3]-x[2]);s2=abs(y[1]-y[0])+abs(y[3]-y[2]);if (abs(x1-x2)<s1/2&&abs(y1-y2)<s2/2)printf("Yes\n"); else printf("No\n");}return 0;}
阅读全文
0 0
- XTU1178 Rectangle--判断矩形是否相交
- 判断矩形是否相交
- 判断两个矩形是否相交
- 判断两个矩形是否相交
- 判断两个矩形是否相交
- 判断两矩形是否相交
- 判断两矩形是否相交
- 判断两矩形是否相交
- 判断两个矩形是否相交
- 判断两个矩形是否相交
- HDU 1221 Rectangle and Circle(判断圆与矩形是否相交)
- poj1410判断线段与矩形是否相交(判断线段相交)
- 如何判断两矩形是否相交
- 如何判断两个矩形是否相交
- 如何判断两个矩形是否相交
- [Google] 判断圆和矩形是否相交
- 判断两个矩形是否重叠/相交
- PKU1410:判断线段是否跟矩形相交
- 数据结构实验之查找三:树的种类统计---(查找树做法与map做法)
- centos 自动分配ip
- Java网络编程
- 蓝桥杯 基础练习 01字串
- 数据结构第五周项目- 后缀表达式
- XTU1178 Rectangle--判断矩形是否相交
- 一、安装linux系统
- qml之与C++交互
- flume 总结
- try-catch 语法
- Qt 5.6+MySQL5.7.18
- 机器学习之概念偏移
- 部署
- CopyOnWriteArrayList类set方法疑惑?