Mysterious Antiques in Sackler Museum
阿新 • • 發佈:2018-11-10
題意:有t組資料,每組給定4個長方形的寬和高,問是否能從中任取三個構成一個嚴格的長方形,嚴格的長方形指的是長方形內部沒有空缺。
題解:從中任取三個,進行判斷即可,寫成結構體用函式判斷可以大幅減少程式碼量
#include <iostream> #include <algorithm> #include <cstdio> #include <map> #include <vector> #include <cstring> using namespace std; struct D{ int w,h; D(int w0=0,int h0=0) { w = w0; h = h0; } }data[4]; D ll(D a,D b){ if(a.w==b.w) return D(a.w,a.h+b.h); else if(a.h==b.w) return D(a.h,a.w+b.h); else if(a.h==b.h) return D(a.h,a.w+b.w); else if(a.w==b.h) return D(a.w,a.h+b.w); else return D(0,0); } bool pd(D a,D b,D c){ D tmp; tmp = ll(a,b); tmp = ll(tmp,c); if(tmp.w>0) return true; tmp = ll(a,c); tmp = ll(tmp,b); if(tmp.w>0) return true; tmp = ll(b,c); tmp = ll(tmp,a); if(tmp.w>0) return true; return false; } bool solve() { if(pd(data[0],data[1],data[2])) return true; if(pd(data[0],data[1],data[3])) return true; if(pd(data[0],data[2],data[3])) return true; if(pd(data[1],data[2],data[3])) return true; return false; } int main() { int T; scanf("%d",&T); while(T--) { for(int i=0;i<4;i++) { scanf("%d%d",&data[i].w,&data[i].h); } if(solve()) puts("Yes"); else puts("No"); } }