旅行規劃問題

2021-04-18 17:17:17 字數 1521 閱讀 1990

問題描述: g 先生想獨自駕駛汽車從城市a 到城市b。從城市a 到城市b 的距離為d0 公里。汽車油箱的容量為c 公升。每公升汽油能行駛e 公里。出發點每公升汽油的**為p 元。從城市a到城市b 沿途有n 個加油站。第i 個加油站距出發點的距離為di,油價為每公升pi元。如何規劃才能使旅行的費用最省。 程式設計任務: 對於給定的d0,c,e,p,和n 以及n個加油站的距離和油價di 和pi,程式設計計算最小的旅行費用。如果無法到達目的地,輸出「no solution」。

input每組測試資料的第1 行是d0,c,e,p,和n。接下來的n 行中每行2個數di 和pi。

output輸出最小的旅行費用,精確到小數點後2 位。每個答案1行。

sample input275.6 11.9 27.4 2.8 2 102.0 2.9 220.0 2.2

sample output26.95

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

typedef structp;

vector < p > v ;

double d0 , c, e ;

p p ;

bool seq( p p1 , p p2 )

bool run( int n )

p1.id = i ;

p1.dis = d0 ;

p1.price = 0 ;

v.push_back( p1 ) ;

double dmax ;

dmax = c * e ;

int f = i , now = 0 ;

double sum = 0 ;

double po = 0.0 ;

// cout << f << endl;

while( now != f )

else break ;

} if( !v1.size() )

int s = 0 , flag = 0 ;

double noil ;

for( int j = 0 ; j < v1.size() ; j++ )

} if( flag )

else

sum += noil * v[ now ].price ;

po = po + noil ;

po -= ( v1[ s ].dis - v[ now ].dis ) * 1.0 / e ;

now = v1[ s ].id ;

} if( sum == -1 ) cout << "no solution" << endl;

else printf("%.2lf/n",sum);

return true;

}int main()

return 0;

}

旅行規劃問題(貪心)

g 先生想獨自駕駛汽車從城市a到城市b。ab距離為dist 千公尺,油箱容量為c公升,每公升油行駛d千公尺,沿途有n個加油站,距a城的距離為si,油價分別為pi。a點時,郵箱為空,起點油價為p。求從a到b的最少費用。不能到達輸出 no solution 輸入 dsit c d p n 接下來n行輸入...

4212 旅行規劃(travel)

題意 oivillage 是乙個風景秀美的鄉村,為了更好的利用當地的旅遊資源,吸引遊客,推動經濟發展,xkszltl 決定修建了一條鐵路將當地 n nn 個最著名的經典連線起來,讓遊客可以通過火車從鐵路起點 1 11 號景點 出發,依次遊覽每個景區。為了更好的評價這條鐵路,xkszltl 為每乙個景...

BZOJ2388 旅行規劃

分塊,每一塊維護字首和,觀察發現,一次區間加操作對於 l 前,r後的區間裡相對的大小關係沒有影響,對於 l r 裡,將每個位置放在平面內作為乙個點 i si 那麼相當於給區間裡加了乙個斜率。每個塊維護乙個凸包 上凸下凸應該都可以,下文以上凸為例 如果這個塊被完整覆蓋,就打個斜率的標記,否則暴力重構凸...