T1046 旅行家的預算 codevs

2022-05-06 19:30:14 字數 1589 閱讀 7095

題目描述 description

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

輸入描述 input description

第一行d1 c d2 p n

之後n行,每行2個數表示離出發點的距離di和每公升汽油的**pi

輸出描述 output description

最消費用,保留2位小數

樣例輸入 sample input

275.6 11.9 27.4 2.8 2

102.0 2.9

220.0 2.2

樣例輸出 sample output

26.95

資料範圍及提示 data size & hint

n<=100

理解:1、如果 當前站點的位置+油箱容量*每公升油能行駛的距離《下乙個站點的位置,那麼無法到達目的地

2、如果 當前站點油的**比下乙個站點油的**高,那麼先用完油箱裡剩餘的油,再加油加到恰好可以跑到下乙個站點,油箱裡不儲油

設到達當前站點時,油箱裡有剩餘的油,若沒有剩餘則視為0,不影響

a、郵箱裡剩餘的油的單價比當前站點的油的單價高,不用剩餘的油,用當前站點的油。耗費只加上實際需要的油的**,同時儲存若加滿可以省下多少油。

b、油箱裡剩餘的油的單價比當前站點的油的單價低,先用完剩餘的油,再用當前站點的油。耗費加上剩餘的油的**再加上當前站點實際需要的油的**,同時儲存若加可以剩下多少油。

幾個問題:

1、為什麼情況2不儲存油?因為下乙個站點的油的**更便宜。

2、為什麼情況2考慮剩餘的油的**直接用?為什麼不考慮有無剩餘的油?

假設有3個站點 a,b,c。b為當前站點。

若油價為a>b>c,那麼在上乙個站點不儲存油。若油價為ac,那麼先用剩餘的油花費更少。油如果沒有,就是0,計算的時候不影響

帶注釋**

無注釋:

#include #include 

#include

using

namespace

std;

double

d1,c,d2;

intn;

double d[100015],p[100015

];void dfs(int now,double price,double l_o,double

l_o_p)

double max_go=c*d2;

if(d[now]+max_go1

])

if(p[now]>p[now+1

]) dfs(now+1,l_o*l_o_p+((d[now+1]-d[now])/d2-l_o)*p[now],0,0

);

else

}}int

main()

codevs 1046 旅行家的預算

include include include include include include include using namespace std double rest 0,xuyao,p 10 s,c,t,d 10 daan 0 int k 0,j 0,xiao1 0,xiao2 0,bac...

旅行家的預算

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

旅行家的預算

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