1 条题解

  • 0
    @ 2025-8-24 22:20:41

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Miller2019
    求互关!|古人云:Miller2019竞有多弱?无人知之。|我只是一个只会刷红/水题的蒟蒻!|信息、数学、物理竞赛为什么都来害我啊!!!|已淡谷

    搬运于2025-08-24 22:20:41,当前版本为作者最后更新于2020-05-13 23:03:51,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    题意:数轴上有三个点,每一次将一个两侧的点移动至另两个点之间的一个整数位置,求这样做的最大移动次数。

    我们设开始是这样的:

    可以这样移动:M:

    或者这样:N:

    题目让找出最大的移动次数,我们显然可以看出:像 N 一样移动,明显比像 M 一样移动,可移动的次数多。

    所以我们让所有的移动方式都像 N 一样,将靠其他两点最近的移动到与它最近的点的前一个整数点。

    易发现:这样每移动一次,ABC 中最大的距离就会减少 1 。而当它们距离等于 0 时无法移动。

    所以可得:最大移动次数等于最大距离减一。即为 B - A - 1 或 C - B - 1 的最大值。

    易得代码如下:

    #include<stdio.h> 
    #define max(m,n) (m>n?m:n) 
    int a,b,c;
    int main()
    {
    	scanf("%d%d%d",&a,&b,&c);
    	printf("%d",max(b-a,c-b)-1);
    	return 0;
    }
    

    蒟蒻橙后第 8 篇题解。

    • 1

    信息

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