A7383 | 皓仔的移动距离
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
皓仔站在一个 $n \times n$ 的方形地图上。
地图的左上角坐标为 $(1,1)$,右下角坐标为 $(n,n)$。皓仔一开始站在 $(1,1)$。
接下来皓仔会进行 $m$ 次移动。每次移动会给出 $4$ 个整数 $u,d,l,r$,分别表示:
- 向上移动 $u$ 格
- 向下移动 $d$ 格
- 向左移动 $l$ 格
- 向右移动 $r$ 格
如果这次移动后的落点仍然在地图范围内,那么这次移动有效,皓仔会移动到新的位置。
如果这次移动后的落点在地图外,那么这次移动取消,皓仔的位置保持不变。
请你计算所有有效移动里,每次移动出发点到终点的直线距离的总和。
地图的左上角坐标为 $(1,1)$,右下角坐标为 $(n,n)$。皓仔一开始站在 $(1,1)$。
接下来皓仔会进行 $m$ 次移动。每次移动会给出 $4$ 个整数 $u,d,l,r$,分别表示:
- 向上移动 $u$ 格
- 向下移动 $d$ 格
- 向左移动 $l$ 格
- 向右移动 $r$ 格
如果这次移动后的落点仍然在地图范围内,那么这次移动有效,皓仔会移动到新的位置。
如果这次移动后的落点在地图外,那么这次移动取消,皓仔的位置保持不变。
请你计算所有有效移动里,每次移动出发点到终点的直线距离的总和。
输入格式
第一行输入两个整数 $n,m$,分别表示地图大小和移动次数。
接下来 $m$ 行,每行输入 $4$ 个整数 $u,d,l,r$,表示一次移动中向上、向下、向左、向右移动的距离。
接下来 $m$ 行,每行输入 $4$ 个整数 $u,d,l,r$,表示一次移动中向上、向下、向左、向右移动的距离。
输出格式
输出一个实数,表示所有有效移动的直线距离总和。
答案保留 $2$ 位小数。
答案保留 $2$ 位小数。
输入输出样例
输入 #1
5 4 0 3 0 4 1 0 2 0 5 0 0 0 0 1 0 0
输出 #1
8.24
【样例解释】
皓仔初始在 $(1,1)$。
第 $1$ 次移动:向下 $3$ 格,向右 $4$ 格,落点为 $(4,5)$,在地图内。
本次移动距离为 $5$。
第 $2$ 次移动:向上 $1$ 格,向左 $2$ 格,落点为 $(3,3)$,在地图内。
本次移动距离为 $\sqrt{1^2+2^2}=\sqrt{5}$,约为 $2.24$。
第 $3$ 次移动:向上 $5$ 格,落点会到地图外,本次移动取消。
第 $4$ 次移动:向下 $1$ 格,落点为 $(4,3)$,在地图内。
本次移动距离为 $1$。
所以总距离为:
$5+2.24+1=8.24$
【数据范围】
对于所有测试数据保证:
- $1 \le n \le 1000$
- $1 \le m \le 1000$
- $0 \le u,d,l,r \le 1000$
皓仔初始在 $(1,1)$。
第 $1$ 次移动:向下 $3$ 格,向右 $4$ 格,落点为 $(4,5)$,在地图内。
本次移动距离为 $5$。
第 $2$ 次移动:向上 $1$ 格,向左 $2$ 格,落点为 $(3,3)$,在地图内。
本次移动距离为 $\sqrt{1^2+2^2}=\sqrt{5}$,约为 $2.24$。
第 $3$ 次移动:向上 $5$ 格,落点会到地图外,本次移动取消。
第 $4$ 次移动:向下 $1$ 格,落点为 $(4,3)$,在地图内。
本次移动距离为 $1$。
所以总距离为:
$5+2.24+1=8.24$
【数据范围】
对于所有测试数据保证:
- $1 \le n \le 1000$
- $1 \le m \le 1000$
- $0 \le u,d,l,r \le 1000$
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?