P1016 旅行家的預算

2021-10-05 16:40:27 字數 1144 閱讀 9735

乙個旅行家想駕駛汽車以最少的費用從乙個城市到另乙個城市(假設出發時油箱是空的)。給定兩個城市之間的距離d1、汽車油箱的容量c(以公升為單位)、每公升汽油能行駛的距離d2、出發點每公升汽油**p和沿途油站數n(n可以為零),油站ii離出發點的距離di、每公升汽油**pi(i=1,2,…,n)。計算結果四捨五入至小數點後兩位。如果無法到達目的地,則輸出「no solution」。

第一行,d1,c,d2,p,n。

接下來有n行。

第i+1行,兩個數字,油站i離出發點的距離di和每公升汽油**pi。

所需最小費用,計算結果四捨五入至小數點後兩位。如果無法到達目的地,則輸出「no solution」。

輸入 :								 輸出 :26.95

275.6 11.9 27.4 2.8 2

102.0 2.9

220.0 2.2

自然是想找油價最低的油站,在最大行駛距離內(c*d2),有近而遠找比現在油站(now)油價低的油站(nextlow):

如果能找到,那就直接在now加油到剛好行駛到nextllow;

如果找不到,那就在now加滿油,行駛到能到達的最遠的油站nextfar;

如果在now加滿油而到達不了最近的油站時,則輸出「no solution」.

這就是貪心演算法,每次貪以上最好的距離,直到到達目的地,得到結果

#include

#include

#include

#include

using

namespace std;

struct point points[8]

;int

cmp(point a, point b)

intmain()

for( i = now+

1; maxs >= points[i]

.d - points[now]

.d; i++

)else

//如果高的話,那我就在所有加油點中找到最低的

continue;}

}if(flag)

//如果找到的加油站比現在的**低

else

if(now == n +1)

}return0;

}

P1016 旅行家的預算

乙個旅行家想駕駛汽車以最少的費用從乙個城市到另乙個城市 假設出發時油箱是空的 給定兩個城市之間的距離d1d1 汽車油箱的容量cc 以公升為單位 每公升汽油能行駛的距離d2d2 出發點每公升汽油 pp和沿途油站數nn nn可以為零 油站ii離出發點的距離didi 每公升汽油 pipi i 1,2,ni...

P1016 旅行家的預算

h yp erli nk hyperlink hyperl ink de scri ptio ndescription descri ptio n 有乙個人要從乙個地方a aa開車前往另乙個地方b bb,這之間的距離為d1d1 d1車油箱的容量為c cc,每一公升 可以是小數 汽油能使車行駛d2d2...

P1016 旅行家的預算

乙個旅行家想駕駛汽車以最少的費用從乙個城市到另乙個城市 假設出發時油箱是空的 給定兩個城市之間的距離d1 汽車油箱的容量c 以公升為單位 每公升汽油能行駛的距離d2 出發點每公升汽油 p和沿途油站數n n可以為零 油站i離出發點的距離di 每公升汽油 pi i 1,2,n 計算結果四捨五入至小數點後...