『题解』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;
}
posted @ 2022-01-21 20:52  仙山有茗  阅读(56)  评论(0编辑  收藏  举报