『题解』AtCoder AT4128 [ABC097A] Colorful Transceivers
题目大意
有三个人,分别在 \(A,B,C\) 处位置,判断第一个人和第三个人可不可以通信。
“通信”定义如下:
- 两地距离 \(\leq D\)。
- 可以存在间接通信,比如第一个人可以和第二个人通信,第二个人可以和第三个人通信,那么第一个人可以和第三个人通信。
思路
直接判断即可,条件为 abs(c-a)<=d || abs(b-a)<=d && abs(c-b)<=d
,意为 \(A\) 和 \(C\) 的距离小于或等于 \(D\) 或 \(A \rightarrow B\) 且 \(B \rightarrow C\) 距离都小于或等于 \(D\)。
代码
#include <iostream>
using namespace std;
int main(){
int a,b,c,d;
cin >> a >> b >> c >> d;
// a->c直接通信或a->b->c间接通信距离小于d都是可以通信的
if(abs(c-a)<=d || abs(b-a)<=d && abs(c-b)<=d) puts("Yes");
else puts("No");
return 0;
}