#6523. 奇迹世界 (Светот на Чудата)
奇迹世界 (Светот на Чудата)
2025年 北马其顿编程竞赛 (Macedonian programming contests 2025)
赛事等级: 社区与地区级竞赛 (Community and Regional competition)
内容类型: 竞赛题目 (Competition tasks)
题目名称:奇迹世界 (Светот на Чудата)
题目描述
克里斯(Chris)生活在奇迹世界中,这个世界可以被表示为一个坐标系。他的家位于坐标原点 ,而他女朋友的家位于坐标 。

克里斯有两种移动方式:
- 使用超能力:克里斯可以在一个步骤内向右移动 个单位,向上移动 个单位。换句话说,如果他当前位于 ,使用一次超能力后他将到达 。
- 步行:他可以在一个步骤内向任何方向(左、右、上、下)移动 个单位。即从 移动到 、、 或 。
克里斯必须到达他女朋友的家。由于他非常懒惰,他希望尽可能减少步行的步数(使步行的总移动距离最小化)。
给定女朋友家的坐标 以及超能力的参数 和 ,请计算克里斯到达目的地所需的最少步行步数。
输入格式
- 第一行包含 4 个整数,用空格分隔: ()。其中 是目的地的位置, 和 是超能力的参数。
评分说明:
- 30% 的分数满足:,,且 。
- 另有 30% 的分数满足:。
- 其余分数满足最大数据范围限制。
输出格式
- 输出一个整数,代表克里斯所需的最少步行步数。
限制条件
- 时间限制: 100 毫秒
- 内存限制: 64 MB
样例说明
样例 1:
输入:10 10 3 3
输出:2
解释:克里斯使用 3 次超能力到达 (9, 9),然后步行 2 步到达 (10, 10);或者使用 4 次超能力到达 (12, 12),然后步行 4 步回到 (10, 10)。显然 2 步更少。
样例 2:
输入:11 11 3 3
输出:2
解释:克里斯连续使用 4 次超能力:$(0, 0) \to (3, 3) \to (6, 6) \to (9, 9) \to (12, 12)$。从 出发,他向左走一步,向下走一步到达 ,总共步行 2 步。
解题思路分析
-
数学模型: 假设克里斯使用了 次超能力,那么他通过超能力到达的位置是 。 从该位置到达目的地 需要步行的步数为:
$$\text{Steps}(k) = |W - k \cdot C| + |H - k \cdot R|$$我们的目标是找到一个非负整数 ,使得 最小。
-
函数性质: 函数 是一个关于 的凸函数(具体来说是多个绝对值函数之和)。对于这类函数,我们可以使用三分搜索 (Ternary Search) 来寻找最小值,或者通过分析极值点来解决。
-
极值点分析: 最小值通常出现在 或 附近。 由于 高达 ,我们不能遍历 。我们需要检查以下几个 的取值:
- 和
- 和
- 特殊情况:。
计算这几个可能的 对应的 ,取最小值即可。
版权信息
- 项目: Macedonian Programming Contests 2025
- 赛事: Community and Regional competition
- 版权方: ZIM (北马其顿计算机科学家协会)