NOIP1999 旅行家的預算

2021-07-14 06:40:58 字數 1271 閱讀 5278

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

第1行:5個空格分開的資料,分別表示d1 c d2 p n 第2..n+1行:每行3個空格分開的資料,分別表示油站號i, 該油站距出發點的距離di,該油站每公升汽油的**pi

第1行:乙個資料,表示最少費用

copy

(如果複製到控制台無換行,可以先貼上到文字編輯器,再複製)

275.6 11.9 27.4 2.8 2

1 102.0 2.9

2 220.0 2.2

26.95
分析:

按di從小到大排序,for迴圈依次壓如優先佇列,如果把佇列裡比當前的加油站貴的換成當前加油站的油;

p.s:加油時不加ans,用油時在加相應**。

#include #include #include #include using namespace std;

struct node;

node(double x,double y,double z)

bool operator<(const node &x)const

};struct node2;

node2(double x,double y)

}station[110];

bool cmp(node2 x,node2 y)

while(!q.empty())

q1.push(q.top());

fuel-=q.top().c;

q.pop();

} while(!q.empty())

while(!q1.empty())

q.push(node(i,station[i].c,c-fuel));

fuel=c;

double s=station[i+1].b;

while(!q.empty())

else if(t.c==0)

s-=e.c*d2;

fuel-=e.c;

ans+=e.c*t.b;

} }printf("%.2lf\n",ans);

return 0;

}

NOIP1999 旅行家的預算

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

NOIP 1999 旅行家的預算

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

NOIP1999 旅行家的預算

1046 旅行家的預算 1999年noip全國聯賽普及組noip全國聯賽提高組 時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解 題目描述 description 乙個旅行家想駕駛汽車以最少的費用從乙個城市到另乙個城市 假設出發時油箱是空的 給定兩個城市之間的距離d1 汽車油...