1 条题解

  • 0
    @ 2025-8-24 21:27:25

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Iggle_Piggle
    c 2 h 5 o h || 小六蒟蒻 || 蓝名壶关

    搬运于2025-08-24 21:27:24,当前版本为作者最后更新于2024-01-17 16:58:39,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题传

    这是一道贪心题。

    从起点到终点和从终点到起点是等效的,所以视两者为端点。

    设端点 s,ts,ts<ts<t,传送门 p1,p2p_1,p_2p1<p2p_1<p_2

    不妨求从 sstt 的最短距离。

    设想,若要使用传送门,则一定是从 p1p_1p2p_2 的。

    采用反证法,假设 p2p_2p1p_1 使用传送门。

    因为 sstt 是向左走,而 p2p_2p1p_1 是向右走,所以这样使用传送门一定产生多余的步数。

    所以,若要使用传送门,则一定是从 ssp1p_1 再到 p2p_2 最后到 tt

    最后我们算答案就从用传送门和不用传送门中,花费距离取最小即可,也即

    ans=min(ts,p1s+p2s)ans=\min(|t-s|,|p_1-s|+|p_2-s|)
    #include<bits/stdc++.h>
    using namespace std;
    int a, b, c, d;
    signed main()
    {
    	scanf("%d%d%d%d", &a, &b, &c, &d);
    	if(a > b) a ^= b ^= a ^= b;
    	if(c > d) c ^= d ^= c ^= d;
    	printf("%d", min(b - a, abs(c - a) + abs(d - b)));
    	return 0;
    }
    
    • 1

    信息

    ID
    9691
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者