传送门
题面描述:
为了将粪便更好的处理掉,John要把它从 a 运送到 b ,为了减少时间,John在路上建立了两个传送门,位置分别是 x 和 y ,两个传送门可以互相传送,并且他们不一定是在两个不同的格子上的(也有可能在起点或终点),每走一格需要的代价是1,当走进其中一个传送门时会被传送到另一个传送门(传送过程不需要花费代价),要求从 a 到 b 的最小代价是多少。
题目分析:
终于有水题了,从 a 到 b 只有两种走法,使用传送门和不使用传送门,计算两种情况的距离比较一下输出小的那个就行,注意计算使用传送门时要加绝对值。
代码:
#include<algorithm>
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<queue>
#include<vector>
using namespace std;
long long a,b,x,y;
int main(){
cin>>a>>b>>x>>y;
long long dis=abs(a-b),dis1=min(abs(x-a),abs(y-a)),dis2=min(abs(x-b),abs(y-b));
if(dis>dis1+dis2) cout<<dis1+dis2;
else cout<<dis;
}