luogu P1016 旅行家的預算 貪心

2022-08-03 06:36:10 字數 1125 閱讀 8491

[luogu]p1016

旅行家的預算

題目描述

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

輸入輸出格式

輸入格式:

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

接下來有n行。

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

輸出格式:

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

輸入輸出樣例

輸入樣例1#:

275.6 11.9 27.4 2.8 2

102.0 2.9

220.0 2.2

輸出樣例1#:

26.95

【資料範圍】

n<=6

貪心,每次找最近的比當前**便宜的加油站,剛好開到那,如果沒有,就把油加滿,開往下乙個目的地。

**:

1

greedy

3 #include4 #include5 #include6 #include7

using

namespace

std;

8namespace

lysgas[16

];13

intn;

14double

d1,d2,c,p,ans,s,x,y;

15bool cmp(const road &x,const road &y)

16int

main()

30for(k=i+1;k<=n&&(gas[k].dis-gas[i].dis)<=s;k++)

31if(gas[k].add<=gas[i].add)

38if(i==n)

42if(i!=k) 47}

48return0;

49}50}

51int

main()

Luogu P1016 旅行家的預算

首先將起點和終點與道路上的加油站視為等價節點,按照距離起點的距離 即通過順序 排序。然後對於每乙個節點我們可以進行以下貪心策略 注 讀入的時候一定要看一下引用的變數被賦值了沒!include define n 10 using namespace std int n double d1,c,d2,a...

Luogu P1016 旅行家的預算

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

P1016 旅行家的預算

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