給定乙個 n \times nn×n 的方形網格,設其左上角為起點◎,座標(1,1)(1,1),xx 軸向右為正, yy 軸向下為正,每個方格邊長為 11 ,如圖所示。
一輛汽車從起點◎出發駛向右下角終點▲,其座標為 (n,n)(n,n)。
在若干個網格交叉點處,設定了油庫,可供汽車在行駛途中加油。汽車在行駛過程中應遵守如下規則:
汽車只能沿網格邊行駛,裝滿油後能行駛 kk 條網格邊。出發時汽車已裝滿油,在起點與終點處不設油庫。
汽車經過一條網格邊時,若其 xx 座標或 yy 座標減小,則應付費用 bb ,否則免付費用。
汽車在行駛過程中遇油庫則應加滿油並付加油費用 aa。
在需要時可在網格點處增設油庫,並付增設油庫費用 cc(不含加油費用aa )。
n,k,a,b,cn,k,a,b,c 均為正整數, 且滿足約束: 2\leq n\leq 100,2 \leq k \leq 102≤n≤100,2≤k≤10。
設計乙個演算法,求出汽車從起點出發到達終點所付的最小費用。
輸入格式:
檔案的第一行是 n,k,a,b,cn,k,a,b,c 的值。
第二行起是乙個n\times nn×n 的 0-10−1 方陣,每行 nn 個值,至 n+1n+1 行結束。
方陣的第 ii 行第 jj 列處的值為 11 表示在網格交叉點 (i,j)(i,j) 處設定了乙個油庫,為 00 時表示未設油庫。各行相鄰兩個數以空格分隔。
輸出格式:
程式執行結束時,輸出最小費用。
輸入樣例#1:
9 3 2 3 6輸出樣例#1: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
12分層最短路板子題,講在i行,j列,還剩k油為乙個狀態,其中建出這個點為k*n*n+i*n+j然後分出加油和跑路,跑一邊spfa即可
#include #include#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define maxn 200100
#define inf 10000009
#define mod 10000007
#define ll long long
#define in(a) a=read()
#define rep(i,k,n) for(int i=k;i<=n;i++)
#define drep(i,k,n) for(int i=k;i>=n;i--)
#define cl(a) memset(a,0,sizeof(a))inline
intread()
inline
void
out(int
x)int
n,k,a,b,c;
deque
q;int ans=0
;int
dis[maxn],vis[maxn];
int total=0,head[maxn<<2],nxt[maxn<<2],to[maxn<<2],val[maxn<<2
];inline
int calc(int l,int i,int
j)inline
void adl(int a,int b,int
c)inline
void
spfa()
}return;}
intmain()
else}}
spfa();
ans=inf;
rep(i,
0,k) ans=min(ans,dis[calc(i,n-1,n-1
)]);
out(ans);
return0;
}
洛谷P4009 汽車加油行駛問題
給定乙個 n times nn n 的方形網格,設其左上角為起點 座標 1,1 1,1 xx 軸向右為正,yy 軸向下為正,每個方格邊長為 11 如圖所示。一輛汽車從起點 出發駛向右下角終點 其座標為 n,n n,n 在若干個網格交叉點處,設定了油庫,可供汽車在行駛途中加油。汽車在行駛過程中應遵守如...
P4009 汽車加油行駛問題
看了很多題解,無論什麼解法都繞不開分層圖 在本題中加滿油的車每次可以移動k步,那麼我們就可以建立乙個k 1層的分層圖,表示汽車油量k的狀態 油量0 k 然後根據題目要求建圖 首先我們規定 k從1開始 第k層第i行第j列點編號為 k 1 n n i 1 n j 首先我們從第k層 i,j 建立一條邊到第...
P4009 汽車加油行駛問題
題意 給定乙個 n n n n 的方形網格,設其左上角為起點,座標為 1,1 1,1 x x 軸向右為正,y y 軸向下為正,每個方格邊長為 1 1 一輛汽車從起點出發駛向右下角終點 n,n n,n 在若干個網格交叉點處,設定了油庫。汽車在行駛過程中應遵守如下規則 汽車只能沿網格邊行駛,裝滿油後能行...