Helvetic Coding Contest 2018 online mirror (teams allowed, unrated)(codeforces)
题意
给出r个A类点的坐标,给出b个B类点的坐标(都是二维),判断是否存在一个匹配,使得A类,B类恰好用完,且没有相交的线段。只能A类与B类匹配,不能同类匹配。
题解
当且仅当宇宙飞船和基地的数量相同时,答案是肯定的。事实上,线段长度之和最小的分配不会有任何交叉点。我们可以通过矛盾法来证明这一点。让我们假设存在一对相交的线段AB,CD,其中A和C是飞船,B,D是基地。如果我们改变赋值到AD和CB,由于三角形不等式,段长之和将减少,且其段长之和小于最小值,矛盾。因此,只要飞船和基座的数量相同,就一定能保证所有的线段都不相交。
int r, b; cin >> r >> b;
if(r != b) cout << "NO\n";
else cout << "YES\n";