P9581 题解

· · 题解

题意:设数轴上有两定点 A,B,一动点 P 位于原点,求 P 到达 A,B 所需的最短路径的距离。

本题需分类讨论。

a,b 分别为 A,B 的坐标。

A,B 都同时位于点 P 左侧或右侧,即坐标正负性相同,此时 P 到达 A,B 的最短距离就是 \max(|a|,|b|),因为 P 可以经过一点到达另一点。

A,B 坐标正负性不同,则 P 到达一点后还需要原路返回至原点,再向另一点运动,此时最短距离就是 2\times\min(|a|,|b|)+\max(|a|,|b|)

#include <bits/stdc++.h>

using namespace std;

int a, b, absa, absb;

int main() {
    cin >> a >> b;
    absa = abs(a);
    absb = abs(b);
    if ((a >= 0 && b >= 0) || (a < 0 && b < 0)) {
        cout << max(absa, absb);
    }
    else
    cout << 2 * min(absa, absb) + max(absa, absb);
    return 0;
}