题目
思路
将矩形间的相交情况通过投影转化为x、y两个方向下的线段是否相交,即前面的题目,判断两个区间是否相交,x投影的每个区间的左端点是每个矩形x的min,右端点是每个矩形的x的max,y投影情况同理,只要x轴的投影或者y轴的投影没有相交,即可判断不相交,其余情况都相交
注意题目说到要面积有重合部分才算相交,提示我们相交一个点或者一条线不算相交,且通过第一个样例我们也可以得出这样的结论
代码
#include<stdio.h>int a1,b1,c1,d1;
int a2,b2,c2,d2;
int max_x1,max_y1,min_x1,min_y1;
int max_x2,max_y2,min_x2,min_y2;int min(int a,int b){return a<b?a:b;
}int max(int a,int b){return a>b?a:b;
}int main(){int K;scanf("%d",&K);while(K--){scanf("%d%d%d%d",&a1,&b1,&c1,&d1);scanf("%d%d%d%d",&a2,&b2,&c2,&d2);max_x1=max(a1,c1),max_y1=max(b1,d1),min_x1=min(a1,c1),min_y1=min(b1,d1);min_x2=min(a2,c2),min_y2=min(b2,d2),max_x2=max(a2,c2),max_y2=max(b2,d2);if(max_x1<=min_x2||max_y1<=min_y2||max_x2<=min_x1||max_y2<=min_y1) printf("No\n");else printf("Yes\n");}return 0;
}