usaco2018 feb cu Teleportation

这篇博客讲述了农场主约翰如何使用肥料传送器来减少拖运肥料的距离,以求得从位置a到位置b的最小运输总距离。通过一个例子展示了如何计算最短路径。

http://www.elijahqi.win/2018/03/03/usaco2018-feb-cu-teleportation/
One of the farming chores Farmer John dislikes the most is hauling around lots of cow manure. In order to streamline this process, he comes up with a brilliant invention: the manure teleporter! Instead of hauling manure between two points in a cart behind his tractor, he can use the manure teleporter to instantly transport manure from one location to another.

Farmer John’s farm is built along a single long straight road, so any location on his farm can be described simply using its position along this road (effectively a point on the number line). A teleporter is described by two numbers x

x

and y

y

, where manure brought to location x

x

can be instantly transported to location y

y

, or vice versa.

Farmer John wants to transport manure from location a

a

to location b

b

, and he has built a teleporter that might be helpful during this process (of course, he doesn’t need to use the teleporter if it doesn’t help). Please help him determine the minimum amount of total distance he needs to haul the manure using his tractor.

INPUT FORMAT (file teleport.in):

The first and only line of input contains four space-separated integers: a

a
and b

b
, describing the start and end locations, followed by x

x
and y

y
, describing the teleporter. All positions are integers in the range 0…100

0…100
, and they are not necessarily distinct from each-other.

OUTPUT FORMAT (file teleport.out):

Print a single integer giving the minimum distance Farmer John needs to haul manure in his tractor.

SAMPLE INPUT:

3 10 8 2
SAMPLE OUTPUT:

3
In this example, the best strategy is to haul the manure from position 3 to position 2, teleport it to position 8, then haul it to position 10. The total distance requiring the tractor is therefore 1 + 2 = 3.

Problem credits: Brian Dean

一条通道 一个运输任务 如果用通道则不计算时间 求总时间最短

直接按照题意模拟即可

#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
inline char gc(){
    static char now[1<<16],*S,*T;
    if (T==S){T=(S=now)+fread(now,1,1<<16,stdin);if (T==S) return EOF;}
    return *S++;
}
inline int read(){
    int x=0,f=1;char ch=gc();
    while(ch<'0'||ch>'9') {if (ch=='-') f=-1;ch=gc();}
    while(ch<='9'&&ch>='0') x=x*10+ch-'0',ch=gc();
    return x*f;
}
int a,b,x,y;
int main(){
    freopen("teleport.in","r",stdin);
    freopen("teleport.out","w",stdout);
    a=read();b=read();x=read();y=read();
    int dis1=abs(a-x),dis2=abs(a-y),dis3=abs(b-x),dis4=abs(b-y);
    printf("%d",min(dis1,dis2)+min(dis3,dis4));
    return 0;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值