站外题求解qwq真的不会了o(╥﹏╥)o

学术版

Kaito_Shinichi @ 2024-11-01 19:56:16

题目描述
AC鸭最讨厌的运动是跑步,跑步是AC鸭的噩梦。为了偷懒,他制造了一个伟大的发明:超级传送门!与直接从一个地点到另一个地点相比,他可以使用超级传送门将自己从一个地点瞬间传送到另一个地点。

跑道沿着一条长直道路而建,所以跑道上的每个地点都可以简单地用该地点在道路上的位置来表示(相当于数轴上的一个点)。一个传送门可以用两个数x和y表示,跑到地点x的自己可以瞬间传送到地点y,反之亦然。

AC鸭想要从地点a跑到地点b,他建造了一个可能对这一过程有所帮助的传送门(当然,如果没有帮助,他也可以不用)。请帮助他求出他需要跑步总距离的最小值。

输入
输入仅包含一行,为四个用空格分隔的整数:a和b,表示起始地点和结束地点,后面是x和y,表示传送门。所有的位置都是整数,不一定各不相同。

输出
输出一个整数,为AC鸭需要跑步的最小距离。

输入数据 1
3 10 8 2
Copy
输出数据 1
3

这题足足想了30分钟qwq但是只有10分o(╥﹏╥)o

求大佬指点!!


by Grammar__hbw @ 2024-11-01 20:05:58

@Liujunjia0208 希望更丰富的展现?使用 Markdown、KaTeX。


by Liujunjia0208 @ 2024-11-01 20:06:04

#include<iostream>
#include<cmath>
using namespace std;
int main(){
    int a,b,x,y;
    cin>>a>>b>>x>>y;
    int ans1 = abs(a-b);//不走传送门的路程 
    int ans2 = abs(a-x)+abs(y-b);//从a传送门的路程 
    int ans3 = abs(b-x)+abs(y-a);//从b传送门的路程 
    cout<<min(ans1,min(ans2,ans3));
    return 0;
}

by chen_z @ 2024-11-01 20:13:56

@Kaito_Shinichi 分别计算

直接走

走到 x 传送到 y 再走

走到 y 传送到 x 再走

三者的值,取最小值


|