題目描述乙個旅行家想駕駛汽車以最少的費用從乙個城市到另乙個城市(假設出發時油箱是空的)。給定兩個城市之間的距離d1、汽車油箱的量c(以公升為單位)、每公升汽油能行駛的距離d2、出發點每公升汽油**p和沿途油站數n(n可以為零),油站i離出發點的距離i、每公升汽油**pi(i=1,2,……n)。計算結果四捨五入至小數點後兩位。如果無法到達目的地,則輸出「no solution」。
輸入輸入第一行有5個數:d1,c,d2,p,n(前四個為實數,n為整數,n<=1000)
後面有n行,每行兩個實數,分別表示對應的加油站離出發點的距離,與每公升汽油的**
輸出輸出僅一行,即最少花費
我們直接進入主題。
首先是路程是確定的,每公升油能走多遠也是確定的。
所以,我們需要用的油的總量是確定的。
那麼,我們何嘗不在能力範圍之類,讓便宜的油的比重更大?
如是就產生的貪心的基礎。
then,對於當前站點 cur 。
我們先確定乙個範圍為 c*d2 (也就是真個油箱充滿,我們能夠走到的最遠距離)
在這個範圍內找乙個**最便宜的站點j。
於是就會有以下2 situations:
1.這個站點j 就是cur
再細分兩種情況:
1.從cur就可以走到終點
於是我們把油加到剛好到達終點即可
(ans+=((d1-d[cur])/d2-rest)*p[cur]);就得到了最後答案。
rest是當前剩餘的油
2.從cur不能一把走到終點
於是,從當前位置走,走到**加油都不夠在cur這裡加油划算。
所以加滿。
2.這個站點j 是在cur後面的某個站點
也有兩種情況
1.當前剩餘的油rest不夠走到j
於是我們,把油加來剛好能夠走到j就行了。(因為j這裡好好便宜!)
2.剩餘的油rest足夠,直接開過去就行了。
上述過程中,注意隨時更新ans,rest等值。
整到題目就well done了。
這道題,沒有**。sad。
貪心 旅行家的預算
問題描述 乙個旅行家想駕駛汽車以最少的費用從乙個城市到另乙個城市 假設出發時油箱是空的 給定兩個城市之間的距離d1 汽車油箱的容量c 以公升為單位 每公升汽油能行駛的距離d2 出發點每公升汽油 p和沿途油站數n n可以為零 油站i離出發點的距離di 每公升汽油 pi i 1,2,n 計算結果四捨五入...
題解 旅行家的預算(貪心)
八中oj 洛谷 這題太複雜了,能否全a看資料。很好的一道模擬貪心題 演算法原理 優先順序 如下 1.列舉途中經過的加油站,每經過乙個加油站,計算一次花費 2.在乙個加油站所需要加的油,就是能夠支援它到達下乙個油價比它低的加油站的量 3.如果在這個加油站即使加滿油,都不能到達乙個比它油價低的加油站,1...
旅行家的預算
問題描述 乙個旅行家想駕駛汽車以最少的費用從乙個城市到另乙個城市 假設出發時油箱是空的 給定兩個城市之間的距離d1 汽車油箱的容量c 以公升為單位 每公升汽油能行駛的距離d2 出發點每公升汽油 p和沿途油站數n n可以為零 油站i離出發點的距離di 每公升汽油 pi i 1,2,n 計算結果四捨五入...