题目链接:https://ac.nowcoder.com/acm/contest/5669/F
解题思路:
有一个简单方法:
1.找到四个距离中的最大值即可锁定一组对角。
代码:
#include<bits/stdc++.h> using namespace std; int main() { int t; scanf("%d",&t); while(t--) { int ac, ad, bc, bd; scanf("%d%d%d%d",&ac,&ad,&bc,&bd); if(ad == max(max(ac,ad),max(bc,bd)) || bc == max(max(ac,ad),max(bc,bd))) printf("AB//CD\n"); else printf("AB//DC\n"); } }
2.分类讨论,当然无脑找出所有情况是可以的,我们也可以分类。
作一条A...B的中垂线,对D来说:若AD<BD则在左边,否则在右边
对C来说:若AC<BC则在左边,否则在右边
再去讨论D,C的位置关系。
都在左边的时候如果BD>BC则为DC,否则为CD
都在右边的时候如果AD>AC则为CD,否则为DC
代码:
#include<bits/stdc++.h> using namespace std; int main() { int t; scanf("%d",&t); while(t--) { bool lc=0,rc=0,ld=0,rd = 0; int ac, ad, bc, bd; cin >> ac >> ad >> bc >> bd; if(ad < bd) ld = 1; else rd = 1; if(ac < bc) lc = 1; else rc = 1; if(lc && rd) { cout << "AB//CD" <<endl; continue; } if(ld && rc) { cout << "AB//DC" <<endl; } if(lc && ld) { if(bd > bc) { cout << "AB//DC" << endl; } else { cout << "AB//CD" << endl; } continue; } if(rc && rd) { if(ad > ac) { cout << "AB//CD" << endl; } else { cout << "AB//DC" << endl; } continue; } } }