牛客假日团队赛1B.便便传送门(一)

链接:https://ac.nowcoder.com/acm/contest/918/B

题意:

Farmer John最讨厌的农活是运输牛粪。为了精简这个过程,他制造了一个伟大的发明:便便传送门!与使用拖拉机拖着装满牛粪的大车从一个地点到另一个地点相比,他可以使用便便传送门将牛粪从一个地点瞬间传送到另一个地点。
Farmer John的农场沿着一条长直道路而建,所以他农场上的每个地点都可以简单地用该地点在道路上的位置来表示(相当于数轴上的一个点)。一个传送门可以用两个数x和y表示,被拖到地点x的牛粪可以瞬间传送到地点y,反之亦然。

Farmer John想要将牛粪从地点a运输到地点b,他建造了一个可能对这一过程有所帮助的传送门(当然,如果没有帮助,他也可以不用)。请帮助他求出他需要使用拖拉机运输牛粪的总距离的最小值。

思路:

总共三种走法,a->x->y->b.a->y->x->b,a->b。
取最小的走法即可。

代码:

#include <bits/stdc++.h>
 
using namespace std;
 
typedef long long LL;
const int MAXN = 3e5 + 10;
const int MOD = 1e9 + 7;
int n, m, k, t;
 
int main()
{
    int a, b, x, y;
    cin >> a >> b >> x >> y;
    if (a > b)
        swap(a, b);
    if (x > y)
        swap(x, y);
    int len1 = b-a;
    int ax = abs(a-x), ay = abs(a-y), bx = abs(b-x), by = abs(b-y);
    int len2 = min(ax+by, ay+bx);
    cout << min(len1, len2) << endl;
 
    return 0;
}
原文地址:https://www.cnblogs.com/YDDDD/p/10995664.html