AT_cpsco2019_s2_f Treasure Collector
题目描述
在一个 $N \times N$ 的网格上,每个格子里都放着一枚硬币。我们用 $(i, j)$ 表示第 $i$ 行、第 $j$ 列的格子位置。例如,左上角的格子是 $(1, 1)$,右上角是 $(1, N)$,左下角是 $(N, 1)$,右下角则是 $(N, N)$。
你是一名擅长驾驭机器人来收集宝藏的寻宝者,决定用这些机器人来收集网格上的硬币。
网格上有 $N$ 个机器人,编号为 $1$ 到 $N$。你将会得到一个长度为 $N$ 的排列 $P$,和一个长度为 $N$ 的正整数序列 $A$。每个机器人 $i$ 的初始位置是格子 $(i, P_i)$。机器人可以一次最多携带 $A_i$ 枚硬币。
由于一次性收集大量硬币比较困难,因此你打算将所有硬币移动到机器人的初始位置中之一。目标是,让所有的硬币都聚集到某个机器人的初始位置。
每次行动需要支付 $1$ 的代价,并且你可以执行以下操作:
- 选择一个机器人,假设是 $i$。
- 指定一个方向(上下左右之一),以及一个不超过 $A_i$ 的正整数 $x$,并告知机器人。
- 机器人会按这个方向移动到相邻格子,并且如果在途中遇到硬币,就拾取硬币;这个过程将持续,直到机器人拾取了 $x$ 枚硬币。
- 拾取完硬币后,机器人将沿原路返回它的初始位置 $(i, P_i)$,并且将所有拾取的硬币放在那里。
这些机器人已经比较老旧,容易误操作,因此不能让机器人进入其他机器人已经经过的格子,或者试图移出网格范围。
请计算,最小需要多少代价,才能将所有硬币都汇集到某个初始位置。
输入格式
输入以以下形式给出:
> $N$ $P_1\ P_2\ \ldots\ P_N$ $A_1\ A_2\ \ldots\ A_N$
输出格式
输出将所有硬币聚集到某个初始位置所需的最小代价。
说明/提示
- $2 \le N \le 80$
- $1 \le P_i \le N$
- $P$ 是 $1$ 到 $N$ 的一个排列
- $1 \le A_i \le N-1$
- 所有输入均为整数
### 样例解释 1
可以通过以下 $4$ 次操作达成目标:
- 机器人 $1$ 向下移动,$x=1$
- 机器人 $3$ 向左移动,$x=2$
- 机器人 $2$ 向上移动,$x=1$
- 机器人 $3$ 向上移动,$x=2$
### 样例解释 2
可以通过以下 $4$ 次操作达成目标:
- 机器人 $1$ 向下移动,$x=2$
- 机器人 $3$ 向上移动,$x=2$
- 机器人 $2$ 向上移动,$x=1$
- 机器人 $2$ 向下移动,$x=1$
**本翻译由 AI 自动生成**