給定乙個n*n 的方形網格,設其左上角為起點◎,座標為(1,1),x 軸向右為正,y
軸向下為正,每個方格邊長為1,如圖所示。一輛汽車從起點◎出發駛向右下角終點▲,其
座標為(n,n)。在若干個網格交叉點處,設定了油庫,可供汽車在行駛途中加油。汽車在
行駛過程中應遵守如下規則:
(1)汽車只能沿網格邊行駛,裝滿油後能行駛k 條網格邊。出發時汽車已裝滿油,在起
點與終點處不設油庫。
(2)汽車經過一條網格邊時,若其x 座標或y 座標減小,則應付費用b,否則免付費用。
(3)汽車在行駛過程中遇油庫則應加滿油並付加油費用a。
(4)在需要時可在網格點處增設油庫,並付增設油庫費用c(不含加油費用a)。
(5)(1)~(4)中的各數n、k、a、b、c均為正整數,且滿足約束:2 £ n £ 100,2 £ k £ 10。
設計乙個演算法,求出汽車從起點出發到達終點的一條所付費用最少的行駛路線。
第一行是n,k,a,b,c的值。第二行起是一
個n*n 的0-1 方陣,每行n 個值,至n+1 行結束。方陣的第i 行第j 列處的值為1 表示在
網格交叉點(i,j)處設定了乙個油庫,為0 時表示未設油庫。各行相鄰兩個數以空格分隔。
程式執行結束時,將最小費用輸出
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
12
給狀態橫縱座標外再加一維剩餘油量,其實就是最短路啊
如果值為1強制加油,如果沒油了強制建加油站,如果x或y座標增量為負強制加b
如果已經到(n,n)了但是沒油了不用建加油站(12分啊12分內牛滿面tat
#include#include#include#include#include#define ll long long
#define max(a,b) ((a)>(b)? (a):(b))
#define min(a,b) ((a)<(b)? (a):(b))
using namespace std;
int i,m,n,k,f[101][101][11],a,bb,c,d[101][101],b[101][101][11], xa[4]=, ya[4]=,j,ans=0x3f3f3f3f;
struct vv ;
queue q;
void spfa()
} }}int main()
汽車加油行駛問題
1.問題描述 給定乙個n n 的方形網格,設其左上角為起點,座標為 1,1 x 軸向右為正,y 軸 向下為正,每個方格邊長為1。一輛汽車從起點出發駛向右下角終點,其座標為 n,n 在若干個網格交叉點處,設定了油庫,可供汽車在行駛途中加油。汽車在行駛過程中應遵守 如下規則 1 汽車只能沿網格邊行駛,裝...
c 汽車加油行駛問題
給定乙個 n n 的方形網格,設其左上角為起點 座標為 1,1 x 軸向右為正,y軸向下為正,每個方格邊長為1。一輛汽車從起點 出發駛向右下角終點 其座標為 n,n 在若干個網格交叉點處,設定了油庫,可供汽車在行駛途中加油。汽車在行駛過程中應遵守如下規則 1 汽車只能沿網格邊行駛,裝滿油後能行駛 k...
P4009 汽車加油行駛問題
看了很多題解,無論什麼解法都繞不開分層圖 在本題中加滿油的車每次可以移動k步,那麼我們就可以建立乙個k 1層的分層圖,表示汽車油量k的狀態 油量0 k 然後根據題目要求建圖 首先我們規定 k從1開始 第k層第i行第j列點編號為 k 1 n n i 1 n j 首先我們從第k層 i,j 建立一條邊到第...