A7621 | [ABC135E] Golf
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
有一个无限扩展的二维格子。ジャンボ高橋君决定在这个格子上打高尔夫球。
球最初位于原点 $(0,\ 0)$,目标点是格子点(即坐标均为整数的点)$(X,\ Y)$。ジャンボ高橋君每打一杆,可以进行如下操作:
- 从当前球所在的位置,选择一个与当前位置的曼哈顿距离为 $K$ 的格子点,将球击到该点。
当球到达目标点时,游戏结束,所用的击球次数即为得分。ジャンボ高橋君希望用尽可能少的击球次数完成游戏。
请判断是否可以完成游戏。如果可以,请给出一种使得得分最小的击球方案。
曼哈顿距离的定义:对于两个坐标 $(x_1,\ y_1),\ (x_2,\ y_2)$,它们的曼哈顿距离为 $|x_1-x_2|+|y_1-y_2|$。
球最初位于原点 $(0,\ 0)$,目标点是格子点(即坐标均为整数的点)$(X,\ Y)$。ジャンボ高橋君每打一杆,可以进行如下操作:
- 从当前球所在的位置,选择一个与当前位置的曼哈顿距离为 $K$ 的格子点,将球击到该点。
当球到达目标点时,游戏结束,所用的击球次数即为得分。ジャンボ高橋君希望用尽可能少的击球次数完成游戏。
请判断是否可以完成游戏。如果可以,请给出一种使得得分最小的击球方案。
曼哈顿距离的定义:对于两个坐标 $(x_1,\ y_1),\ (x_2,\ y_2)$,它们的曼哈顿距离为 $|x_1-x_2|+|y_1-y_2|$。
输入格式
输入通过标准输入给出,格式如下:
> $K$ $X$ $Y$
> $K$ $X$ $Y$
输出格式
如果无法完成游戏,输出
如果可以完成游戏,输出一种使得得分最小的击球方案,格式如下:
> $s$ $x_1$ $y_1$ $x_2$ $y_2$ $\cdots$ $x_s$ $y_s$
其中,$s$ 是最小得分,$(x_i,\ y_i)$ 表示第 $i$ 杆球击到的坐标。
-1。如果可以完成游戏,输出一种使得得分最小的击球方案,格式如下:
> $s$ $x_1$ $y_1$ $x_2$ $y_2$ $\cdots$ $x_s$ $y_s$
其中,$s$ 是最小得分,$(x_i,\ y_i)$ 表示第 $i$ 杆球击到的坐标。
输入输出样例
输入 #1
11 -1 2
输出 #1
3 7 4 2 10 -1 2
输入 #2
4600 52 149
输出 #2
-1
输入 #3
4 9 9
输出 #3
5 1 3 4 2 4 6 6 8 9 9
### 限制条件
- 所有输入均为整数。
- $1\leq K\leq 10^9$
- $-10^5\leq X,\ Y\leq 10^5$
- $(X,\ Y)\neq (0,\ 0)$
### 样例解释 1
- $(0,\ 0)$ 到 $(7,\ 4)$ 的曼哈顿距离为 $|0-7|+|0-4|=11$。
- $(7,\ 4)$ 到 $(2,\ 10)$ 的曼哈顿距离为 $|7-2|+|10-4|=11$。
- $(2,\ 10)$ 到 $(-1,\ 2)$ 的曼哈顿距离为 $|2-(-1)|+|10-2|=11$。
由此可见,这种击球方式是正确的。此外,不存在比 $3$ 杆更少的完成方法。
- 所有输入均为整数。
- $1\leq K\leq 10^9$
- $-10^5\leq X,\ Y\leq 10^5$
- $(X,\ Y)\neq (0,\ 0)$
### 样例解释 1
- $(0,\ 0)$ 到 $(7,\ 4)$ 的曼哈顿距离为 $|0-7|+|0-4|=11$。
- $(7,\ 4)$ 到 $(2,\ 10)$ 的曼哈顿距离为 $|7-2|+|10-4|=11$。
- $(2,\ 10)$ 到 $(-1,\ 2)$ 的曼哈顿距离为 $|2-(-1)|+|10-2|=11$。
由此可见,这种击球方式是正确的。此外,不存在比 $3$ 杆更少的完成方法。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?