#P2322. PLANKS

PLANKS

题目翻译

描述
在一片沼泽上建造一座桥,通过用木板连接树桩来穿越沼泽。

你被食人族追赶,必须想办法穿过一个满是鳄鱼的沼泽。沼泽中有一些树桩,它们按照规则的10×1010 \times 10网格分布,每个网格点相距11英尺。幸运的是,附近有一些木板可以铺设在树桩之间。网格左上角的树桩位于陆地,而沼泽对岸的右下角树桩也是陆地。你必须设计一个木板的铺设方案,使自己能够从起点穿越到终点。每块木板只能使用一次,且必须从一棵树桩开始并结束在另一棵树桩上。此外,木板只能沿网格水平或垂直方向铺设,不允许对角线铺设。

给定的问题可能有多个解,但你只需找到一个解即可。你的解不需要是最优的,可以使用任意组合的木板。有效的解可以包含交叉的木板。

输入
输入包含一个或多个沼泽问题。沼泽由一个10×1010 \times 10的字符网格定义。每个点(“.”)表示空地,每个星号(“*”)表示一个树桩。每个木板问题定义在沼泽描述之后的一行输入中。该行的第一个数字是可用的木板数量(最多2020个),其余数字是可用木板的长度。每个木板根据其在列表中的顺序分配一个编号。例如,在第1111行中,木板1199英尺,木板2299英尺,木板3355英尺,木板4488英尺。

输出
输出的每一行包含一块木板铺设到特定树桩的信息,如下面的示例输出所示。(请使用完全相同的措辞和格式。)输出的木板顺序应使你能够从树桩(1,1)(1,1)到达树桩(10,10)(10,10)。如果无法用指定的木板找到解,则输出“no solution possible”。每个问题解之后输出一个空行。

示例输入 1

*...*....*
..........
**.*.*....
..........
..*....*..
.....*....
..........
...*......
..........
..*....*.*
4  9 9 5 8
3  9 2 3
8  2 3 4 5 6 7 8 9

示例输出 1

place plank 1 to stump (1,10)
place plank 2 to stump (10,10)

no solution possible

place plank 3 to stump (1,5)
place plank 4 to stump (1,10)
place plank 8 to stump (10,1)