洛谷P4009 汽車加油行駛問題

2022-05-19 02:38:06 字數 2239 閱讀 2365

給定乙個 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

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

分層最短路板子題,講在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 在若干個網格交叉點處,設定了油庫。汽車在行駛過程中應遵守如下規則 汽車只能沿網格邊行駛,裝滿油後能行...