問題描述: 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 那麼相當於給區間裡加了乙個斜率。每個塊維護乙個凸包 上凸下凸應該都可以,下文以上凸為例 如果這個塊被完整覆蓋,就打個斜率的標記,否則暴力重構凸...