#zDLybttg030209. 1502:汽车加油行驶问题
1502:汽车加油行驶问题
1502:汽车加油行驶问题
题目描述
给定一个 的方形网格,设其左上角为起点◎,坐标为 , 轴向右为正, 轴向下为正,每个方格边长为 ,如图所示。
一辆汽车从起点◎出发驶向右下角终点▲,其坐标为 。
在若干个网格交叉点处,设置了油库,可供汽车在行驶途中加油。汽车在行驶过程中应遵守如下规则:
- 行驶限制:汽车只能沿网格边行驶,装满油后能行驶 条网格边。出发时汽车已装满油,在起点与终点处不设油库。
- 方向费用:汽车经过一条网格边时,若其 坐标或 坐标减小,则应付费用 ,否则免付费用(即向右或向下行驶免费,向左或向上行驶需付费 )。
- 油库加油:汽车在行驶过程中遇到油库必须加满油并付加油费用 。
- 增设油库:在没有油库的网格点处,汽车可以增设临时油库(加满油)并付增设油库费用 (不含加油费用 )。注意:增设油库后该点不会永久变成油库,只是本次可以使用。
均为正整数,且满足约束:,。

设计一个算法,求出汽车从起点出发到达终点的一条所付费用最少的行驶路线。
输入格式
第一行是 的值。
第二行起是一个 的 - 方阵,每行 个值,至 行结束。
方阵的第 行第 列处的值为 表示在网格交叉点 处设置了一个油库,为 时表示未设油库。各行相邻两个数以空格分隔。
输出格式
输出一个整数,表示最小费用。
样例
样例输入 #1
9 3 2 3 6
0 0 0 0 1 0 0 0 0
0 0 0 1 0 1 1 0 0
1 0 1 0 0 0 0 1 0
0 0 0 0 0 1 0 0 1
1 0 0 1 0 0 1 0 0
0 1 0 0 0 0 0 1 0
0 0 0 0 1 0 0 0 1
1 0 0 1 0 0 0 1 0
0 1 0 0 0 0 0 0 0
样例输出 #1
12
样例解释 #1
- 网格大小 ,满油可行驶 条边。
- 费用参数:加油费 ,逆向行驶费 ,增设油库费 。
- 网格中 表示有油库, 表示无油库。
- 汽车从 出发,必须到达 。
- 一种可能的最优路径(费用为 )需要合理规划加油点和行驶方向,可能在某些点增设油库或利用现有油库,并尽可能避免逆向行驶费用。
数据范围
- 为正整数,具体范围未给出,但应在合理范围内
时空限制
- 时间限制:1000 ms
- 内存限制:262144 KB
注意:本题可以使用分层图最短路(状态为 )或动态规划求解。由于 ,状态数可控。