旅行家的預算(貪心講題0)

2022-07-22 06:00:20 字數 1029 閱讀 4021

題目描述

乙個旅行家想駕駛汽車以最少的費用從乙個城市到另乙個城市(假設出發時油箱是空的)。給定兩個城市之間的距離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 計算結果四捨五入...