題目
思路
將矩形間的相交情況通過投影轉化為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;
}