清橙OJ A1122 旅行家的預算

2021-08-20 14:29:48 字數 2692 閱讀 1134

時間限制:

1.0s

記憶體限制:

256.0mb

試題**

noip1999

提高組問題描述

乙個旅行家想駕駛汽車以最少的費用從乙個城市到另乙個城市(假設出發時油箱是空的)。給定兩個城市之間的距離

d1、汽車油箱的容量

c(以公升為單位)、每公升汽油能行駛的距離

d2、出發點每公升汽油**

p和沿途油站數n(

n可以為零),油站

i離出發點的距離

di、每公升汽油**pi(

i=1,2,

……n)。計算結果四捨五入至小數點後兩位。如果無法到達目的地,則輸出

「no solution」

輸入格式

第一行為

4個實數d1、

c、d2、

p與乙個非負整數n;

接下來n

行,每行兩個實數di、

pi。輸出格式

如果可以到達目的地,輸出乙個實數(四捨五入至小數點後兩位),表示最小費用;否則輸出

「no solution」

(不含引號)。

樣例輸入

275.6 11.9 27.4 2.8 2

102.0 2.9

220.0 2.2

樣例輸出

26.95

解題思路

貪心在加油站

i加滿油能到達的所有加油站中,如果存在油價比

i低的加油站

j,則在加油站

i把油加到恰好能開到加油站j就行

否則在加油站

j把油加滿開到下乙個加油站

**

// 貪心

// 在加油站i加滿油能到達的所有加油站中,如果存在油價比i低的加油站j,則在加油站i把油加到恰好能開到加油站j就行

// 否則在加油站j把油加滿開到下乙個加油站

#include#include#include#include#includeusing namespace std;

struct station

fin.close();

sort(sta.begin(), sta.end()); // 按距離公升序

double oil = 0, ans = 0; // 當前剩餘油量和加油花費

int pos = 0; // 當前位置

double currentdis = 0, currentpri = p; // 當前加油站的距離和油價

bool has_next = false; // 是否能達到下乙個加油站

while (pos!=n+1)

if (sta.at(j).pri=(sta.at(j).dis-currentdis)/d2) // 油箱裡現存的油已經足夠開到j加油站

else // 現存的油不夠開到j加油站

break;

}} if (!has_next) // 一箱油的車程內沒有油價更便宜的加油站

else

}} if (pos!=n+1)

else

return 0;

#endif

#ifdef online_judge

double d1,c,d2,p;

int n,i,j;

cin >> d1 >> c >> d2 >> p >> n;

station tmp;

vectorsta;

tmp.dis = 0;

tmp.pri = p;

sta.push_back(tmp);

tmp.dis = d1;

tmp.pri = 0;

sta.push_back(tmp); // 把起點和終點也當做加油站加入序列中

for (i=0; i> tmp.dis >> tmp.pri;

sta.push_back(tmp);

} sort(sta.begin(), sta.end()); // 按距離公升序

double oil = 0, ans = 0; // 當前剩餘油量和加油花費

int pos = 0; // 當前位置

double currentdis = 0, currentpri = p; // 當前加油站的距離和油價

bool has_next = false; // 是否能達到下乙個加油站

while (pos!=n+1)

if (sta.at(j).pri=(sta.at(j).dis-currentdis)/d2) // 油箱裡現存的油已經足夠開到j加油站

else // 現存的油不夠開到j加油站

break;

}} if (!has_next) // 一箱油的車程內沒有油價更便宜的加油站

else

}} if (pos!=n+1)

else

return 0;

#endif

}

旅行家的預算

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

旅行家的預算

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

旅行家的預算

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