[IOI1996][网络流24题]火星探险

Grade Open Time Friday, 19 September 2014, 10:05 am
Discount 0.8 Time Discount Friday, 26 September 2014, 10:05 am
Allow late Yes Close Time Friday, 26 September 2014, 10:05 am
Input file mars.in Output file mars.out

«问题描述:
火星探险队的登陆舱将在火星表面着陆,登陆舱内有多部障碍物探测车。登陆舱着陆后,
探测车将离开登陆舱向先期到达的传送器方向移动。探测车在移动中还必须采集岩石标本。
每一块岩石标本由最先遇到它的探测车完成采集。每块岩石标本只能被采集一次。岩石标本
被采集后,其他探测车可以从原来岩石标本所在处通过。探测车不能通过有障碍的地面。本
题限定探测车只能从登陆处沿着向南或向东的方向朝传送器移动,而且多个探测车可以在同
一时间占据同一位置。如果某个探测车在到达传送器以前不能继续前进,则该车所采集的岩
石标本将全部损失。
«编程任务:
用一个P´Q 网格表示登陆舱与传送器之间的位置。登陆舱的位置在(X1,Y1)处,传送器
的位置在(XP ,YQ)处。

给定每个位置的状态,计算探测车的最优移动方案,使到达传送器的探测车的数量最多,
而且探测车采集到的岩石标本的数量最多。
«数据输入:
由文件mars.in提供输入数据。文件的第1行为探测车数,第2 行为P的值,第3 行为
Q 的值。接下来的Q 行是表示登陆舱与传送器之间的位置状态的P´Q 网格。用3 个数字表
示火星表面位置的状态:0 表示平坦无障碍,1表示障碍,2 表示石块。
«结果输出:
程序运行结束时,将每个探测车向传送器移动的序列输出到文件mars.out 中。每行包
含探测车号和一个移动方向,0 表示向南移动,1 表示向东移动。
输入文件示例 输出文件示例
mars.in
2
10
8
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 0 0 0
0 0 0 1 0 2 0 0 0 0
1 1 0 1 2 0 0 0 0 1
0 1 0 0 2 0 1 1 0 0
0 1 0 1 0 0 1 1 0 0
0 1 2 0 0 0 0 1 0 0

0 0 0 0 0 0 0 0 0 0

mars.out

1 1
1 1
1 1
1 1
1 0
1 0
1 1
1 0
1 0
1 0
2 1
2 1
2 1
2 1
2 0
2 0
2 0
2 0
2 1
2 0
2 0
2 1
2 0
2 1
2 1
2 1