题目链接: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;
}
}
}
京公网安备 11010502036488号